Esercizio - Distribuire Database di Azure per MySQL

Completato

In questo esercizio si creerà l'istanza di Database di Azure per MySQL in cui si caricheranno i dati di esempio.

Ottenere l'applicazione di esempio e lo script

Prima di tutto, clonare l'applicazione di esempio e lo script della shell dal repository GitHub:

git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git

Dopo aver clonato il progetto, verranno visualizzati i file e le directory seguenti:

├── Azure-MySQL-Setup-For-Sample-App.md
├── README.md
├── 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
└── world.sql

Accedere ad Azure

Accedere ad Azure, se non è stato ancora eseguito l’accesso:

az login

Configurare una posizione di installazione predefinita

I comandi eseguiti dallo script usato in questo modulo prevedono un'opzione --location. È possibile specificare un valore predefinito per questa opzione con il seguente comando.

az configure --defaults location=<desired location>

Nota

È consigliabile usare la stessa area per la distribuzione dell'applicazione Java EE.

Creare un'istanza di Database di Azure per MySQL

Dopo avere eseguito l'accesso, usare lo script di progetto setup_mysql.sh per creare l'istanza di Database di Azure per MySQL. Assicurarsi di essere nella directory mslearn-jakarta-ee-azure.

Importante

Eseguire il comando seguente in un ambiente IPv4. Se l'ambiente ha un indirizzo IPv6, questo comando avrà esito negativo perché la configurazione del firewall non supporta ancora gli indirizzi IPv6.

./setup_mysql.sh flexible

Osservare i valori chiave visualizzati nell'output del comando. Tali valori verranno usati nei passaggi successivi.

[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------
[INFO] 1. Please copy the following value into your temporal file
[INFO]
[INFO] RESOURCE GROUP is MySQL-RG-20201208152233
[INFO] MySQL HOSTNAME is mysqlserver-wqcnzwhqvw.mysql.database.azure.com
[INFO] MySQL USERNAME is azureuser
[INFO] MySQL PASSWORD is **********
[INFO]
[INFO]
[INFO] 2. Please execute the following command.
[INFO]
[INFO] mysql -u azureuser -h mysqlserver-wqcnzwhqvw.mysql.database.azure.com -p [Enter Key]
[INFO] Enter password: ********** [COPY&PASTE]
[INFO] 
[INFO] 
[INFO] 3. Clean up Resource (Delete MySQL DB)
[INFO] az group delete -n MySQL-RG-20201208152233
[INFO] -------------------------------------------------------

Ottenere i dati dal database di esempio

In questo modulo verrà usato un database di esempio denominato world disponibile nel sito Web ufficiale di MySQL. Per ottenere i dati:

  1. Scaricare il file di database:

    curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
    
  2. Decomprimere il file di database:

    unzip world-db.zip
    
  3. Accedere al file SQL:

    cd world-db
    ls -l world.sql
    
    -rw-r--r--  1 ******  wheel  398635  1  7 12:25 world.sql
    

Accedere al database MySQL

Dopo avere ottenuto il database MySQL, è possibile accedere al database usando il comando mysql e la password di cui è stata eseguita la registrazione al momento della creazione dell'istanza di server flessibile:

mysql -u azureuser -h mysqlserver-<your instance>.mysql.database.azure.com -p [Enter]
Enter password: [**********]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.7.29-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Creare un database e le tabelle per l'applicazione

Eseguire il comando mysql seguente:

mysql> source world.sql
Query OK, 0 rows affected (0.01 sec)
....
....
Query OK, 0 rows affected (0.01 sec)

mysql>

Il database world e le relative tabelle vengono creati automaticamente nel database MySQL. Questa azione richiede diversi minuti.

Verificare il database e le tabelle

  1. Verificare che i database siano presenti nel server:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | world              |
    +--------------------+
    5 rows in set (0.02 sec)
    
  2. Puntare ai dati nel database world:

    mysql> use world;
    Database changed
    
  3. Verificare le tabelle nel database world:

    mysql> show tables;
    +-----------------+
    | Tables_in_world |
    +-----------------+
    | city            |
    | country         |
    | countrylanguage |
    +-----------------+
    3 rows in set (0.04 sec)
    

Eseguire query sul database di esempio

A questo punto è possibile visualizzare il contenuto del database world.

  1. Ottenere le informazioni sui continenti:

    mysql> select distinct Continent from country ;
    +---------------+
    | Continent     |
    +---------------+
    | North America |
    | Asia          |
    | Africa        |
    | Europe        |
    | South America |
    | Oceania       |
    | Antarctica    |
    +---------------+
    
  2. Ottenere i nomi e i codici dei paesi in base al continente:

    mysql> select code,name from country where Continent='Asia';
    +------+----------------------+
    | 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)
    
  3. Ottenere tutte le città con una popolazione superiore a 1 milione:

    mysql> select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;
    +------+---------------------+-------------+-----------+------------+
    | 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)
    

Riepilogo dell'unità

A questo punto sono state completate le attività di configurazione e preparazione per il server MySQL. Nell'unità successiva vengono descritti i passaggi per distribuire l'applicazione Java EE (Jakarta EE) a JBoss EAP in Servizio app di Azure e per configurarla.