Azure Database forMySQL Deploy
1. 사전 준비
1) https://portal.azure.com에 접속 및 로그인
2) 리소스 그룹 생성 (1/3)
- 왼쪽 네비게이션의 리소스 그룹 클릭 후 리소스 그룹 추가 버튼 클릭
5.
1. 사전 준비
2)리소스 그룹 생성 (2/3)
- 리소스 그룹을 생성하기 위한 기본정보 입력 후 리뷰+만들기 버튼 클릭
Azure Database for MySQL Deploy
6.
1. 사전 준비
2)리소스 그룹 생성 (3/3)
- 리소스 그룹 내용 확인 및 만들기 버튼 클릭
Azure Database for MySQL Deploy
7.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (1/4)
- 리소스 만들기 -> 데이터베이스 클릭-> Azure Database for MySQL 클릭 -> 만들기 버튼 클릭
Azure Database for MySQL Deploy
8.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (1/4)
- 리소스 만들기 -> 데이터베이스 클릭-> Azure Database for MySQL 클릭 -> 만들기 버튼 클릭
Azure Database for MySQL Deploy
단일 서버 와 유연한 서버가 존재하며 현재 유
연한 서버의 경우 MySQL 5.7버전만 이용 가능
하며 preview 버전
- 최대 10개의 읽기 복제본을 사용하여 읽기
작업 확장(단일 서버의 경우 최대 5개)
- 서버를 중지/시작하여 비용 최적화(최대 7
일간 중지가능)
- 단일서버 대비 많은 서버 설정 변수
9.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (2/4)
- MySQL 서버 정보 입력 후 만들기 버튼 클릭
Parameter Name Description etc
서버 이름
Azure Database for MySQL 서버를 식별하
는 고유한 이름
소문자, 숫자 및 - 만 사용가능
구독 서버에 사용할 Azure 구독
리소스 그룹 종속될 리소스 그룹
소스 선택 신규 또는 기존 백업을 통한 서버구성
비어 있음 : 신규 서버
백업 : 기존 백업을 통한 서버구성
서버 관리자 로그인 이름 서버에 연결시 사용 할 로그인 계정
azure_superuser, admin, administrator,
root, guest 또는 public 사용 불가
암호 서버 관리자 계정의 암호
8-128자 / 다음 범주 중 세 개의 문자를 포
함해야 한다. 영문 대문자, 영문 소문자, 숫
자(0-9) 및 영숫자가 아닌 문자(!, $, #, % 등)
암호 확인 서버 관리자 계정의 암호 확인
위치 서버가 설치될 위치
버전 MySQL 버전 선택 5.6 , 5.7 , 8.0 지원하며 하위 버전 선택불가
가격 책정 계층 서버 스펙에 따른 책정 계층 선택
Azure Database for MySQL Deploy
10.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (2/4)
- 3가지 유형의 가격책정 계층
Azure Database for MySQL Deploy
11.
기본 범용 메모리최적화
계산 세대 5세대 5세대 5세대
vCore 수 1, 2 2, 4, 8, 16, 32, 64 2, 4, 8, 16, 32
vCore당 메모리 2GB 5GB 10 GB
저장소 크기 5GB-1TB 5GB-16TB 5GB-16TB
데이터베이스 백업 보존
기간
7-35일 7-35일 7-35일
2. Azure Database for MySQL 가격 책정 계층
1) 가격 책정 계층(1/2)
- Azure Database for MySQL 서버는 기본, 범용 및 메모리 최적화의 세 가지 가격 책정 계층 중 하나에서
만들 수 있습니다.
Azure Database for MySQL Deploy
12.
가격 책정 계층대상 워크로드
기본
간단한 계산 및 I/O 성능이 필요한 워크로드. 예를 들어 개발 또는 시험, 또는 자주
사용하지 않는 소규모 애플리케이션에 사용되는 서버가 이에 해당
범용
확장 가능한 I/O 처리량을 갖춘 부하 분산된 컴퓨팅 및 메모리가 필요한 대부분의
비즈니스 워크로드. 예를 들어 웹 및 모바일 앱을 호스트하는 서버와
기타 엔터프라이즈 애플리케이션 해당
메모리 최적화
빠른 트랜잭션 처리와 높은 동시성을 위해 메모리 내 성능이 필요한 고성능 데이터
베이스 워크로드. 예를 들어 실시간 데이터를 처리하는 서버 및 고성능 트랜잭션
또는 분석 앱
2. Azure Database for MySQL 가격 책정 계층
1) 가격 책정 계층(2/2)
- 서버를 만든 후 vCore 수, 하드웨어 생성 및 가격 책정 계층(기본 제외)은 몇 초 이내로 늘리거나 줄일 수
있으며 또한 애플리케이션 중단 시간 없이 독립적으로 스토리지 용량을 늘리거나 백업 보존 기간을 늘리거나
줄일 수 있습니다. 서버가 만들어진 후 백업 저장소 유형은 변경할 수 없습니다.
Azure Database for MySQL Deploy
13.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (3/4)
- 만들기 이후로 배포가 진행되며 수분 이내에 완료
Azure Database for MySQL Deploy
14.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (4/4)
- 모든 리소스 클릭 -> 리소스 그룹 선택 ->서버 이름 선택
Azure Database for MySQL Deploy
15.
2. Azure Databasefor MySQL 서버 만들기
1) MySQL Server 생성 (4/4)
- 서버 기본정보 확인 및 변수 변경, 보안, 경고 구성
Azure Database for MySQL Deploy
16.
2. Azure Databasefor MySQL 서버 만들기
2) MySQL Server 방화벽 생성
- Client MySQL 서버 접근을 위해 방화벽 설정 필요
- 생성한 MySQL 서버 리소스 선택-> 연결 보안 클릭 -> 규칙 이름, Open할 Ip 주소 입력 -> 저장
Azure Database for MySQL Deploy
17.
3. Azure Databasefor MySQL 서버 접속
1) MySQL Client 로 접속 (1/2)
- MySQL Client 사용을 위해서는 MySQL Client 프로그램이 설치되어 있어야 한다.
- Download URL
https://dev.mysql.com/downloads/
- 접속 명령어
Azure Database for MySQL Deploy
Parameter
Name
Description 대상
--host(-h) 서버 이름 입력 azure-test-mysql02.mysql.database.azure.com
--user(-u)
서버 관리자 로그인
이름 입력
myadmin@azure-test-mysql02
--password(-p)
서버 관리자 로그인
암호 입력
18.
3. Azure Databasefor MySQL 서버 접속
1) MySQL Client 로 접속 (2/2)
- azure-test-mysql02 서비스 개요 내용 중 서버이름 , 서버 관리자 로그인 이름 확인 후 접속
Azure Database for MySQL Deploy
19.
3. Azure Databasefor MySQL 서버 접속
2) MySQL Workbench GUI 접속 (1/3)
- Client 컴퓨터에서 MySQL Workbench APP을 실행
- Download URL
https://dev.mysql.com/downloads/workbench/
Azure Database for MySQL Deploy
20.
3. Azure Databasefor MySQL 서버 접속
2) MySQL Workbench GUI 접속 (2/3)
- 클릭 -> Connection 정보 입력 -> Test Connection 클릭 -> Successfully made the MySQL
Connection 팝업 출력시 연결 정상 -> OK 클릭
Azure Database for MySQL Deploy
Parameter
Name
Description 대상
Connection Name 연결 이름 사용자 임의로 정의
Connection
Method
연결 방법 TCP/IP
Hostname 서버 이름 입력 azure-test-mysql02.mysql.database.azure.com
Port 포트 3306
Username
서버 관리자 로그인
이름 입력
myadmin@azure-test-mysql02
password
서버 관리자 로그인
암호 입력
Default Schema
접속시 기본 select될
Database
21.
3. Azure Databasefor MySQL 서버 접속
2) MySQL Workbench GUI 접속 (3/3)
- 생성된 Connection 상자 클릭
Azure Database for MySQL Deploy
MySQL to AzureDatabase for MySQL Migration
1. Migration 방법론
덤프 내보내기 가져오기 Azure Database Migration Service
- On-premise와 Azure의 DB를 동기화
- 가동 중지 시간의 최소화
- As-is 와 To-be의 상위 버전은 동일해야함
- MySQL 8.0으로의 마이그레이션은 지원하지 않음
1. mysqldump(mysqlpump)를 이용한 on-
premise db백업
2. mysql를 이용한 Azure로 복원
1. Azure DMS 인스턴스 생성
2. Azure DMS 프로젝트 생성
3. 마이그레이션 실행
4. 마이그레이션 중단
- DB 정합성을 위해 서비스 중지 필요
(복제 구성으로 가동 중지 시간 최소화 가능)
- 대용량 Database의 경우 성능상 지양
On-premise
MySQL
Azure for
MySQL
특징 및 주의사항
특징 및 주의사항
- Azure Database for MySQL 은 InnoDB, Memory 엔진 지원
- Azure Database for MySQL 지원버전(5.6, 5.7, 8.0)
24.
MySQL to AzureDatabase for MySQL Migration
1. Migration 방법론
Load Data Infile
1. Select into outfile ~ 명령을 통한 data export(이기종
DB의 경우 각 Database의 csv export명령어 사용)
2. Load Data Local Infile ~ 명령을 통한 data import
- MySQL 이외의 이기종 Database 마이그레이션 가능
- 오프라인 마이그레이션만 가능
- Import 성능은 가장 우수
- 테이블 단위로만 마이그레이션 가능
On-premise
Database
Azure for
MySQL
특징 및 주의사항
- Azure Database for MySQL 은 InnoDB, Memory 엔진 지원
- Azure Database for MySQL 지원버전(5.6, 5.7, 8.0)
25.
MySQL to AzureDatabase for MySQL Migration
2-1. 덤프 내보내기 가져오기 방법 사용시 유의사항
- Azure Database for MySQL 은 InnoDB 엔진만 사용
- 데이터베이스를 덤프할 때 mysqldump에서 --skip-triggers or --triggers=0 옵션 사용
- single-transaction 옵션을 사용
- 여러 VALUE 목록을 포함하는 extended-insert 여러 행 구문을 사용 (Defaults to on)
- 데이터베이스를 덤프할 때 mysqldump에서 order-by-primary 옵션을 사용
- 데이터베이스를 덤프할 때 mysqldump에서 disable-keys 옵션을 사용 (Defaults to on)
- 데이터 사이즈가 큰 경우 Azure blob/저장소에 백업 파일을 복사하고, 이를 통하여 복원을 수행한다.
- 덤프 내보내기 수행시 병렬 수행을 원하는 경우 mysqlpump 툴을 사용
- 소스DB에서 external tablespace 사용시 덤프 후 덤프파일 수정필요
- 소스DB에서 event, trigger, stored procedure, stored function, view object 사용시 덤프 후 덤프파일 수정필요
- 소스와 타겟의 MySQL 버전이 8.0인 경우 기본 패스워드 인증방식 caching_sha2_password 변경
26.
MySQL to AzureDatabase for MySQL Migration
2-2. 빠른 데이터 로드를 위한 유의사항
- max_allowed_packet – 긴 행으로 인한 오버플로 문제를 방지하기 위해 1073741824(예: 1GB)로 설정한다.
- Slow_query_log – 저속 쿼리 로그를 해제하려면 OFF로 설정한다. 이렇게 하면 데이터 로드 중 느린 쿼리 로깅으로 인한 오버헤드가 제거
된다.
- Query_store_capture_mode – 쿼리 저장소 해제 하려면 없음으로 설정 한다. 이렇게 하면 쿼리 저장소의 샘플링 작업으로 인한 오버헤드
가 제거된다.
- Innodb_buffer_pool_size – 마이그레이션 중에 포털의 가격 책정 계층에서 서버를 32개의 vCore 메모리 최적화 SKU로 확장하여
innodb_buffer_pool_size를 늘립니다. Innodb_buffer_pool_size는 Azure Database for MySQL 서버에 대한 컴퓨팅을 확장해야만 늘릴 수
있다.
- innodb_io_capacity & innodb_io_capacity_max-Azure Portal의 서버 매개 변수에서 9000로 변경 하 여 마이그레이션 속도를 최적화 하기
위해 IO 사용률을 향상 시킨다.
- innodb_write_io_threads & innodb_read_io_threads-마이그레이션의 속도를 개선 하기 위해 Azure Portal의 서버 매개 변수에서 4로 변경
한다.
- 스토리지 계층 스케일 업 – 스토리지 계층이 증가함에 따라 Azure Database for MySQL 서버의 IOP가 점진적으로 증가합니다. 더 빠른 로
드를 위해 스토리지 계층을 늘려 프로비저닝된 IOP를 늘릴 수 있다. 스토리지는 축소할 수 없고 확장만 할 수 있다.
27.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
Azure IaaS
MySQL
Azure for
MySQL
덤프 내보내기 가져오기
① mysqldump
② replication
28.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
1) Source MySQL 대상 정보 확인
2) Target MySQL 대상 정보 확인
29.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
3) Azure for MySQL 방화벽 설정
- MySQL 서버 리소스 선택-> 연결 보안 클릭 -> 규칙 이름, Open할 Ip 주소 입력 -> 저장
30.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
4) Source DB 백업
- Migration 대상 Database 백업
5) Target 에 Database 생성
- 복원 대상 Database 생성
31.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
6) Target 복원(1/2)
- Azure for MySQL에 복원
- 복원 중 Azure for MySQL 프로세스
32.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
6) Target 복원(2/2)
- Azure for MySQL에 복원 확인
33.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
7) Source DB binary log 확인
- mysqldump 파일내의 백업 시점의 binary log 파일명과 포지션 번호를 확인
8) Source MySQL - Target MySQL replication 연결
34.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
9) Target DB Replication 정상 확인
35.
MySQL to AzureDatabase for MySQL Migration
2-3. Migration (mysqldump)
10) 실시간 데이터 동기화 확인
#11 Azure Database for MySQL은 추가 비용 없이 최대 100%의 프로비전된 서버 스토리지를 백업 스토리지로 제공합니다. 이 용량을 초과 하 여 사용 하는 백업 저장소는 매달 GB 단위로 요금이 청구 됩니다. 예를 들어 250 GB의 저장소를 사용 하 여 서버를 프로 비전 하는 경우 무료로 서버를 백업 하는 데 250 GB의 추가 저장소를 사용할 수 있습니다. 250 GB를 초과 하는 백업용 저장소는 가격 책정 모델에 따라 요금이 청구 됩니다.
#12 최대 16TB 및 2만 IOPS의 지원
기본 가격 책정 계층에서 만든 서버는 나중에 범용으로 또는 메모리 최적화되도록 확장할 수 없습니다.
기본 계층에서는 IOPS 보장을 제공하지 않습니다. 범용 및 메모리 최적화 가격 책정 계층에서 IOPS의 크기는 프로비전된 스토리지 크기와 3:1 비율로 조정됩니다.
#13 서버를 만든 후 vCore 수, 하드웨어 생성, 가격 책정 계층(기본 제외), 스토리지 크기 및 백업 보존 기간을 독립적으로 변경할 수 있습니다. 서버가 만들어진 후 백업 스토리지 유형은 변경할 수 없습니다. vCore 수는 늘리거나 줄일 수 있습니다. 백업 보존 기간은 7~35일 범위에서 늘리거나 줄일 수 있습니다. 스토리지 크기는 늘릴 수 있습니다.
vCore 수, 하드웨어 생성 또는 가격 책정 계층을 변경하면 새 컴퓨팅 할당을 사용하여 원본 서버의 복사본이 만들어집니다. 새 서버가 시작되고 실행된 후 새 서버에 대한 연결로 전환됩니다. 시스템이 새 서버로 전환되면 잠시 동안 새 연결을 설정할 수 없으며, 커밋되지 않은 모든 트랜잭션이 롤백됩니다. 이 기간은 다양하지만, 대부분의 경우 1분 미만입니다.
스토리지 크기 조정 및 백업 보존 기간 변경은 온라인 작업입니다. 가동 중지 시간이 없으며 애플리케이션은 영향을 받지 않습니다. IOPS가 프로비전된 스토리지 크기로 조정되면 스토리지를 확장하여 서버에서 사용할 수 있는 IOPS를 늘릴 수 있습니다.
#31 # 데이터 확인
select table_name,table_rows,engine from information_schema.tables where table_schema='employees’;
# 2/18 employees 전체 이관
Bin/mysqldump –uroot –p –single-transaction –routines=0 –triggers=0 –events=0 –master-data=2 employees > /tmp/employees.dmp
# 스키마 이관 (dump)
bin/mysqldump -uroot -p --single-transaction --max_allowed_packet=1024M --no-data --events=1 --routines=1 --triggers=0 employees > /tmp/employees_schema.dmp
bin/mysql -uazureadmin@azure-mysql-jmlim -p -h azure-mysql-jmlim.mysql.database.azure.com employees < /tmp/employees_schema.dmp
(pump)
bin/mysqlpump -uroot -p --skip-dump-rows --skip-definer employees > /tmp/pump.dmp
# 이관 후 편집기로 SET SQL_LOG_BIN=0; 삭제 & 저장
# azure MySQL에서 log_bin_trust_function_creators = ON 설정
# 이관 후 편집기로 DEFINER 삭제 & 저장
# 데이터 이관
bin/mysqldump -uroot -p --single-transaction --routines=0 --triggers=0 --events=0 --max_allowed_packet=1024M --skip-triggers --order-by-primary --no-create-info --master-data=2 employees > /tmp/employees_data.dmp
bin/mysql -uazureadmin@azure-mysql-jmlim -p -hazure-mysql-jmlim.mysql.database.azure.com employees < /tmp/employees_data.dmp
#34 # 복제 계정 생성
create user ‘repl’@’%’ identified by ‘123’;
grant replication slave on *.* to’repl’@’%’;
# 복제 설정
cat /tmp/employees_new.dmp | grep “CHANGE MASTER TO”
CALL mysql.az_replication_change_master('52.188.20.215', 'repl', '123', 3306, 'mysql-bin.000006', 1512, ‘’);
CALL mysql.az_replication_start;
CALL mysql.az_replication_stop;
CALL mysql.az_replication_remove_master;
CALL mysql.az_replication_skip_counter;