연습 - 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
라는 샘플 데이터베이스를 사용합니다. 데이터를 가져오려면:
데이터베이스 파일 다운로드:
curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
데이터베이스 파일의 압축 풀기:
unzip world-db.zip
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 데이터베이스에 자동으로 생성됩니다. 이 작업에는 몇 분이 걸립니다.
데이터베이스 및 테이블 확인
데이터베이스가 서버에 있는지 확인:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | world | +--------------------+ 5 rows in set (0.02 sec)
world
데이터베이스에서 데이터 가리키기:mysql> use world; Database changed
world
데이터베이스에서 테이블 확인:mysql> show tables; +-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set (0.04 sec)
샘플 데이터베이스 쿼리
이제 world
데이터베이스의 콘텐츠를 볼 수 있습니다.
모든 대륙 정보 가져오기:
mysql> select distinct Continent from country ; +---------------+ | Continent | +---------------+ | North America | | Asia | | Africa | | Europe | | South America | | Oceania | | Antarctica | +---------------+
대륙을 기준으로 국가 이름 및 국가 번호 가져오기:
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)
인구가 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에 배포하고 구성하는 단계를 살펴봅니다.