Ejercicio: Implementación de una instancia de Azure Database for MySQL
En este ejercicio, creará la instancia del servidor flexible de Azure Database for MySQL y la cargará con datos de ejemplo.
Obtén la aplicación de ejemplo y el script
Clone la aplicación de ejemplo y el script de shell desde el repositorio de GitHub mediante el siguiente comando:
git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git
La clonación del proyecto genera la siguiente estructura de archivos:
├── LICENSE
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── setup_mysql.sh
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── microsoft
│ │ └── azure
│ │ └── samples
│ │ ├── JAXRSConfiguration.java
│ │ ├── controllers
│ │ │ ├── CityService.java
│ │ │ └── CountryService.java
│ │ ├── entities
│ │ │ ├── City.java
│ │ │ └── Country.java
│ │ └── rest
│ │ └── WorldServiceEndpoint.java
│ ├── resources
│ │ └── META-INF
│ │ └── persistence.xml
│ └── webapp
│ └── WEB-INF
│ ├── beans.xml
│ ├── createMySQLDataSource.sh
│ └── web.xml
└── test
└── java
└── com
└── microsoft
└── azure
└── samples
└── SampleTest.java
Inicio de sesión en Azure
Si no ha iniciado sesión en Azure, inicie sesión con el comando siguiente:
az login
Configuración de una ubicación de instalación predeterminada
Los comandos ejecutados por el script usado en este módulo esperan una --location opción. Especifique un valor predeterminado para esta opción mediante el comando siguiente, reemplazando por <location> una región adecuada. Debe usar la misma región que usa para implementar la aplicación de Jakarta EE más adelante en este módulo.
az configure --defaults location=<location>
Crear una instancia del servidor flexible para Azure Database for MySQL
Vaya al directorio mslearn-jakarta-ee-azure y, a continuación, use el siguiente comando para crear la instancia de Servidor flexible de Azure Database for MySQL:
Importante
Use el siguiente comando en un entorno IPv4. Si el entorno tiene una dirección IPv6, se producirá un error en el comando porque la configuración del firewall para ella aún no admite direcciones IPv6.
Si se produce un error durante la ejecución del script, el proceso se detiene en medio de la ejecución. Puede producirse un error mientras el script concede permisos, como se indica en el mensaje Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identityde salida . Para corregir este error, vuelva a iniciar sesión en la CLI de Azure con un usuario que tenga Azure AD administrator privilegios y vuelva a ejecutar el script.
./setup_mysql.sh flexible
La salida típica incluye el siguiente éxito, además de algunos valores importantes que se usan en el resto de este módulo:
[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------
Guarde los valores de clave que aparecen en la salida porque usará estos valores en pasos posteriores.
Configurar variables de entorno
Use los siguientes comandos para almacenar los valores de clave. Asegúrese de reemplazar los <...> marcadores de posición por los valores que genera el script en la sección anterior.
export RESOURCE_GROUP_NAME=<resource-group>
export MYSQL_SERVER_INSTANCE=<MySQL-host-name>
export MYSQL_USER=<MySQL-admin-user-name>
export MYSQL_PASSWORD=<MySQL-password>
Nota:
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento, como para bases de datos, memorias caché, mensajería o servicios de inteligencia artificial, requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Use este flujo solo cuando las opciones más seguras, como las identidades administradas para conexiones sin contraseña o sin claves, no sean viables. En el caso de las operaciones de máquina local, prefiera identidades de usuario para conexiones sin contraseña o sin claves.
Obtener datos de la base de datos de ejemplo
En este módulo, usará una base de datos de ejemplo denominada world desde el sitio web oficial de MySQL. Para obtener los datos, siga estos pasos:
Descargue el archivo de base de datos mediante el siguiente comando:
curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zipDescomprima el archivo de base de datos mediante el siguiente comando:
unzip world-db.zipEnumere el archivo SQL usando los siguientes comandos:
cd world-db ls -l world.sqlLa salida siguiente es típica:
-rw-r--r-- 1 ****** wheel 398635 1 7 12:25 world.sql
Inicio de sesión en la base de datos
Use el siguiente comando para conectarse a la base de datos con solo el nombre de usuario y la contraseña, en lugar de un token de acceso:
az mysql flexible-server connect \
--name $MYSQL_SERVER_INSTANCE \
--user azureuser \
--interactive
Cuando el sistema le solicite, escriba la contraseña de MySQL que recuperó anteriormente.
Después de conectarse, puede usar la siguiente consulta en el indicador de SQL para ver los nombres de usuario y los complementos disponibles.
SELECT user, host, plugin FROM mysql.user;
La salida siguiente es típica:
+----------------------------------+-----------+-----------------------+
| user | host | plugin |
+----------------------------------+-----------+-----------------------+
| azureuser | % | mysql_native_password |
| $CURRENT_AZ_LOGIN_USER_NAME#EXT#@| % | aad_auth |
| azure_superuser | 127.0.0.1 | mysql_native_password |
| azure_superuser | localhost | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
+----------------------------------+-----------+-----------------------+
Creación de una base de datos y tablas para la aplicación
Siga estos pasos para crear una base de datos para la aplicación a partir del script de world.sql y, a continuación, compruebe sus detalles:
Use el siguiente comando para crear la base de datos y las tablas:
az mysql flexible-server execute \ --name $MYSQL_SERVER_INSTANCE \ --admin-password azureuser \ --admin-password '$MYSQL_PASSWORD' \ --file-path "./world-db/world.sql"Sugerencia
También puede usar
mysqlpara crear una base de datos y tablas a partir de un archivo de script, pero ese comando tarda mucho tiempo en completarse.Confirme que las bases de datos y las tablas están en el servidor mediante el siguiente comando:
az mysql flexible-server connect \ --name $MYSQL_SERVER_INSTANCE \ --admin-user $MYSQL_USER \ --database-name world \ --interactiveCuando el sistema le solicite, escriba la contraseña de MySQL que recuperó anteriormente.
La salida siguiente es típica:
MySQL 8.0.39 mycli 1.27.2 Home: http://mycli.net Bug tracker: https://github.com/dbcli/mycli/issues Thanks to the contributor - Jakub BoukalAl utilizar la consola SQL, use la siguiente consulta para mostrar las bases de datos en el servidor:
show databases;La salida siguiente es típica:
+--------------------+ | Database | +--------------------+ | flexibleserverdb | | information_schema | | mysql | | newdatabase | | performance_schema | | sys | | world | +--------------------+ 7 rows in set Time: 0.152sUse la consulta siguiente para enumerar las tablas de la
worldbase de datos:show tables;La salida siguiente es típica:
+-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set Time: 0.145s
Consulta la base de datos de ejemplo
Siga estos pasos para ver el contenido de la world base de datos:
Enumere toda la información del continente mediante la consulta siguiente:
select distinct Continent from country ;La salida siguiente es típica:
+---------------+ | Continent | +---------------+ | North America | | Asia | | Africa | | Europe | | South America | | Oceania | | Antarctica | +---------------+Enumere los nombres de país y los códigos de país por continente mediante la consulta siguiente:
select code,name from country where Continent='Asia';La salida siguiente es típica:
+------+----------------------+ | code | Name | +------+----------------------+ | AFG | Afghanistan | | ARE | United Arab Emirates | | ARM | Armenia | | AZE | Azerbaijan | | BGD | Bangladesh | | BHR | Bahrain | | BRN | Brunei | | BTN | Bhutan | | CHN | China | | CYP | Cyprus | | GEO | Georgia | | HKG | Hong Kong SAR | | IDN | Indonesia | | IND | India | | IRN | Iran | | IRQ | Iraq | | ISR | Israel | | JOR | Jordan | | JPN | Japan | ..... | VNM | Vietnam | | YEM | Yemen | +------+----------------------+ 51 rows in set (0.02 sec)Enumere todas las ciudades que tengan una población superior a 1 millón mediante la consulta siguiente:
select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;La salida siguiente es típica:
+------+---------------------+-------------+-----------+------------+ | ID | Name | CountryCode | District | Population | +------+---------------------+-------------+-----------+------------+ | 1532 | Tokyo | JPN | Tokyo-to | 7980230 | | 1533 | Jokohama [Yokohama] | JPN | Kanagawa | 3339594 | | 1534 | Osaka | JPN | Osaka | 2595674 | | 1535 | Nagoya | JPN | Aichi | 2154376 | | 1536 | Sapporo | JPN | Hokkaido | 1790886 | | 1537 | Kioto | JPN | Kyoto | 1461974 | | 1538 | Kobe | JPN | Hyogo | 1425139 | | 1539 | Fukuoka | JPN | Fukuoka | 1308379 | | 1540 | Kawasaki | JPN | Kanagawa | 1217359 | | 1541 | Hiroshima | JPN | Hiroshima | 1119117 | | 1542 | Kitakyushu | JPN | Fukuoka | 1016264 | +------+---------------------+-------------+-----------+------------+ 11 rows in set (0.33 sec)
Resumen de la unidad
Ha completado la configuración y la preparación de la instancia de Servidor Flexible de Azure Database for MySQL. La siguiente unidad le presenta el proceso de implementación de la aplicación Jakarta EE en JBoss EAP en Azure App Service, junto con varias opciones de configuración.