연습 - Azure Database for MySQL 배포

완료됨

이 연습에서는 Azure Database for MySQL 인스턴스를 만들고 샘플 데이터와 함께 로드합니다.

샘플 애플리케이션 및 스크립트 가져오기

먼저 GitHub 리포지토리에서 샘플 애플리케이션 및 셸 스크립트를 복제합니다.

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

프로젝트를 복제한 후 다음 디렉터리 및 파일이 표시됩니다.

├── 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

Azure에 로그인

아직 로그인하지 않은 경우 Azure에 로그인합니다.

az login

기본 설치 위치 설정

이 모듈에서 사용되는 스크립트에 의해 실행되는 명령은 --location 옵션을 예상합니다. 다음 명령을 사용하여 이 옵션의 기본값을 지정할 수 있습니다.

az configure --defaults location=<desired location>

참고

Java EE 애플리케이션을 배포할 동일한 지역으로 변경하는 것이 좋습니다.

Azure Database for MySQL 인스턴스 만들기

로그인한 후 프로젝트 스크립트 setup_mysql.sh를 사용하여 Azure Database for MySQL 인스턴스를 만듭니다. mslearn-jakarta-ee-azure 디렉터리에 있는지 확인합니다.

중요

IPv4 환경에서 다음 명령을 실행합니다. 사용자 환경에 IPv6 주소가 있는 경우 해당 환경의 방화벽 구성은 아직 IPv6 주소를 지원하지 않으므로 해당 명령이 실패합니다.

./setup_mysql.sh flexible

명령의 출력에 표시되는 키 값을 기록해 둡니다. 이후 단계에서 해당 값을 사용합니다.

[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] -------------------------------------------------------

샘플 데이터베이스에서 데이터 가져오기

이 모듈에서는 공식 MySQL 웹 사이트의 world라는 샘플 데이터베이스를 사용합니다. 데이터를 가져오려면:

  1. 데이터베이스 파일 다운로드:

    curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
    
  2. 데이터베이스 파일의 압축 풀기:

    unzip world-db.zip
    
  3. SQL 파일에 액세스:

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

MySQL 데이터베이스에 로그인

MySQL 데이터베이스를 가져온 후 mysql 명령 및 유연한 서버 인스턴스를 만들 때 기록한 암호를 사용하여 데이터베이스에 액세스할 수 있습니다.

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>

애플리케이션용 데이터베이스 및 테이블 만들기

다음 mysql 명령을 실행합니다.

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

mysql>

world 데이터베이스와 해당 테이블은 MySQL 데이터베이스에 자동으로 생성됩니다. 이 작업에는 몇 분이 걸립니다.

데이터베이스 및 테이블 확인

  1. 데이터베이스가 서버에 있는지 확인:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | world              |
    +--------------------+
    5 rows in set (0.02 sec)
    
  2. world 데이터베이스에서 데이터 가리키기:

    mysql> use world;
    Database changed
    
  3. world 데이터베이스에서 테이블 확인:

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

샘플 데이터베이스 쿼리

이제 world 데이터베이스의 콘텐츠를 볼 수 있습니다.

  1. 모든 대륙 정보 가져오기:

    mysql> select distinct Continent from country ;
    +---------------+
    | Continent     |
    +---------------+
    | North America |
    | Asia          |
    | Africa        |
    | Europe        |
    | South America |
    | Oceania       |
    | Antarctica    |
    +---------------+
    
  2. 대륙을 기준으로 국가 이름 및 국가 번호 가져오기:

    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. 인구가 100만 명을 초과하는 모든 도시 가져오기:

    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)
    

단원 요약

이제 MySQL Server에 대한 설정 및 준비가 완료되었습니다. 다음 단원에서는 Java EE(Jakarta EE) 애플리케이션을 Azure App Service의 JBoss EAP에 배포하고 구성하는 단계를 살펴봅니다.