자습서: DMS를 사용하여 MySQL에서 Azure Database for MySQL로 오프라인 마이그레이션
Azure Database Migration Service의 고속 데이터 마이그레이션 기능을 통해 외부 MySQL 인스턴스에서 Azure Database for MySQL로 원활하게 마이그레이션을 수행할 수 있습니다. 이 자습서에서는 Azure Database Migration Service에서 오프라인 마이그레이션 작업을 수행하여 샘플 데이터베이스를 MySQL 5.7의 온-프레미스 인스턴스에서 Azure Database for MySQL(v5.7)로 마이그레이션합니다. 이 문서에서는 원본이 MySQL 데이터베이스 인스턴스이고 대상이 Azure Database for MySQL인 것으로 가정하지만 원본 서버 이름과 자격 증명을 변경하기만 하면 서로 다른 Azure Database for MySQL 간에 마이그레이션할 수 있습니다. 또한 낮은 버전의 MySQL 서버(v5.6 이상)에서 더 높은 버전으로의 마이그레이션도 지원됩니다.
참고 항목
이 마이그레이션 환경의 PowerShell 기반 스크립트 가능한 버전은 Azure Database for MySQL로의 스크립트 가능한 오프라인 마이그레이션을 참조하세요.
MySQL용 Amazon RDS(Relational Database Service) 및 Amazon Aurora(MySQL 기반)도 마이그레이션 원본으로 지원됩니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- DMS 인스턴스를 만듭니다.
- DMS에서 MySQL 마이그레이션 프로젝트를 만듭니다.
- DMS를 사용하여 MySQL 스키마를 마이그레이션합니다.
- 마이그레이션을 실행합니다.
- 마이그레이션을 모니터링합니다.
필수 조건
이 자습서를 완료하려면 다음이 필요합니다.
활성 구독이 포함된 Azure 계정이 있어야 합니다. 체험 계정을 만듭니다.
5.7 버전의 온-프레미스 MySQL 데이터베이스가 있어야 합니다. 없으면 MySQL 커뮤니티 버전 5.7을 다운로드하여 설치합니다.
Azure Resource Manager 배포 모델을 사용하여 Azure Database Migration Service용 Microsoft Azure Virtual Network를 만듭니다. 그러면 ExpressRoute 또는 VPN을 사용하여 온-프레미스 원본 서버에 사이트 간 연결이 제공됩니다. 가상 네트워크를 만드는 방법에 대한 자세한 내용은 Virtual Network 설명서를 참조하세요. 특히 단계별 세부 정보를 제공하는 빠른 시작 문서를 참조하세요.
가상 networkNet 설정 중에 Microsoft에 대한 네트워크 피어링에서 ExpressRoute를 사용하는 경우 다음 서비스 엔드포인트를 서비스가 프로비저닝되는 서브넷에 추가합니다.
- 대상 데이터베이스 엔드포인트(예: SQL 엔드포인트, Azure Cosmos DB 엔드포인트 등)
- 스토리지 엔드포인트
- Service Bus 엔드포인트
Azure Database Migration Service에는 인터넷 연결이 없으므로 이 구성이 필요합니다.
가상 네트워크 Network Security Group 규칙이 ServiceBus, Storage 및 AzureMonitor용 ServiceTag의 아웃바운드 포트 443을 차단하지 않는지 확인합니다. 가상 네트워크 NSG 트래픽 필터링에 대한 자세한 내용은 네트워크 보안 그룹을 사용하여 네트워크 트래픽 필터링 문서를 참조하세요.
Azure Database Migration Service가 원본 MySQL Server에 액세스할 수 있게 Virtual Network의 연결을 허용하도록 Windows 방화벽을 엽니다(기본적으로 TCP 포트 3306).
원본 데이터베이스 앞에 방화벽 어플라이언스를 사용하는 경우에는 Azure Database Migration Service가 마이그레이션을 위해 원본 데이터베이스에 액세스할 수 있도록 Virtual Network의 연결을 허용하는 방화벽 규칙을 추가해야 할 수 있습니다.
Azure Database Migration Service의 Virtual Network가 대상 데이터베이스에 액세스할 수 있게 허용하도록 대상 Azure Database for MySQL에 대한 서버 수준 방화벽 규칙을 만들거나 VNET 서비스 엔드포인트를 구성합니다.
원본 MySQL은 지원되는 MySQL 커뮤니티 버전에 있어야 합니다. MySQL 유틸리티 또는 MySQL Workbench에서 MySQL 인스턴스의 버전을 확인하려면 다음 명령을 실행합니다.
SELECT @@VERSION;
Azure Database for MySQL은 InnoDB 테이블만 지원합니다. MyISAM 테이블을 InnoDB로 변환하려면 MyISAM에서 InnoDB로 테이블 변환 문서를 참조하세요.
사용자에게 원본 데이터베이스에서 데이터를 읽을 수 있는 권한이 있어야 합니다.
스키마 마이그레이션을 성공적으로 완료하려면 원본 서버에서 마이그레이션을 수행하는 사용자에게 다음 권한이 필요합니다.
- 원본의 서버 수준에서 "SELECT" 권한이 있어야 합니다.
- 뷰를 마이그레이션하는 경우 사용자는 원본 서버에 대한 "SHOW VIEW" 권한 및 대상 서버에 대한 "CREATE VIEW" 권한이 있어야 합니다.
- 트리거를 마이그레이션하는 경우 사용자는 원본 및 대상 서버에 대한 "TRIGGER" 권한이 있어야 합니다.
- 루틴(프로시저 및/또는 함수)을 마이그레이션하는 경우 대상의 서버 수준에서 "CREATE ROUTINE" 및 "ALTER ROUTINE" 권한이 있어야 합니다.
- 이벤트를 마이그레이션하는 경우 사용자에게 원본 및 대상 서버에 대한 "EVENT" 권한이 있어야 합니다.
- 사용자/로그인을 마이그레이션하는 경우 사용자에게 대상 서버에 대한 "CREATE USER" 권한이 있어야 합니다.
- 이미 존재할 수 있는 테이블을 삭제하기 위해 대상의 서버 수준에서 "DROP" 권한이 있어야 합니다. 예를 들어 마이그레이션을 다시 시도하는 경우 이러한 권한이 필요합니다.
- 외래 키가 있는 테이블을 만들기 위해 대상의 서버 수준에서 "REFERENCES" 권한이 있어야 합니다.
- MySQL 8.0으로 마이그레이션하는 경우 사용자에게 대상 서버에 대한 "SESSION_VARIABLES_ADMIN" 권한이 있어야 합니다.
- 대상 서버 수준에서 "CREATE" 권한이 있어야 합니다.
- 대상 서버 수준에서 "INSERT" 권한이 있어야 합니다.
- 대상 서버 수준에서 "UPDATE" 권한이 있어야 합니다.
- 대상 서버 수준에서 "DELETE" 권한이 있어야 합니다.
대상 Azure Database for MySQL 인스턴스 크기 조정
Azure Database Migration Service를 사용하여 더 빠르게 데이터를 로드할 수 있도록 대상 Azure Database for MySQL 서버를 준비하려면 다음 서버 매개 변수 및 구성을 변경하는 것이 좋습니다.
max_allowed_packet – 대량 행으로 인한 연결 문제를 방지하려면 1073741824(1GB)로 설정합니다.
slow_query_log – 저속 쿼리 로그를 해제하려면 OFF로 설정합니다. 이렇게 하면 데이터를 로드하는 동안 느린 쿼리 로깅으로 인한 오버헤드가 제거됩니다.
query_store_capture_mode – 쿼리 저장소를 해제하려면 NONE으로 설정합니다. 이렇게 하면 쿼리 저장소 샘플링 활동으로 인한 오버헤드가 제거됩니다.
innodb_buffer_pool_size – innodb_buffer_pool_size는 Azure Database for MySQL 서버를 위한 컴퓨팅을 스케일 업해야만 늘릴 수 있습니다. 마이그레이션 중 포털의 가격 책정 계층에서 서버를 64개의 vCore 범용 SKU로 스케일 업하여 innodb_buffer_pool_size를 늘립니다.
innodb_io_capacity & innodb_io_capacity_max - Azure Portal의 서버 매개 변수에서 9000으로 변경하여 마이그레이션 속도를 최적화하기 위해 IO 사용률을 향상시킵니다.
innodb_write_io_threads & innodb_write_io_threads - 마이그레이션의 속도를 개선하기 위해 Azure Portal의 서버 매개 변수에서 4로 변경합니다.
스토리지 계층 강화 – 스토리지 계층이 증가함에 따라 Azure Database for MySQL 서버의 IOP가 점진적으로 증가합니다.
- 단일 서버 배포 옵션에서 더 빠른 로드를 위해 프로비전된 IOP를 늘리려면 스토리지 계층을 늘리는 것이 좋습니다.
- 유연한 서버 배포 옵션에서는 스토리지 크기에 관계없이 IOPS를 스케일링(증가 또는 감소)하는 것이 좋습니다.
- 스토리지 크기는 스케일 다운이 아닌 스케일 업만 가능합니다.
다음 테이블의 세부 정보에 따라 원본 단일 서버의 가격 책정 계층 및 VCore를 기반으로 대상 유연한 서버의 컴퓨팅 크기 및 컴퓨팅 계층을 선택합니다.
단일 서버 가격 책정 계층 단일 서버 VCore 유연한 서버 컴퓨팅 크기 유연한 서버 컴퓨팅 계층 기본 1 1 범용 Standard_D16ds_v4 기본 1 2 범용 Standard_D16ds_v4 범용: 1 4 범용 Standard_D16ds_v4 범용: 1 8 범용 Standard_D16ds_v4 범용 16 범용 Standard_D16ds_v4 범용 32 범용 Standard_D32ds_v4 범용 64 범용 Standard_D64ds_v4 메모리 최적화 4 중요 비즈니스용 Standard_E4ds_v4 메모리 최적화 8 중요 비즈니스용 Standard_E8ds_v4 메모리 최적화 16 중요 비즈니스용 Standard_E16ds_v4 메모리 최적화 32 중요 비즈니스용 Standard_E32ds_v4 1 마이그레이션의 경우 더 빠른 마이그레이션을 위해 대상 유연한 서버에 대해 범용 16개 vCore 컴퓨팅을 선택합니다. 마이그레이션이 완료된 후 이 문서의 뒷부분에 있는 마이그레이션 후 작업 수행 섹션의 컴퓨팅 크기 권장 사항에 따라 대상 서버의 원하는 컴퓨팅 크기로 다시 스케일링합니다.
마이그레이션이 완료되면 서버 매개 변수 및 구성을 워크로드에 필요한 값으로 다시 되돌릴 수 있습니다.
DMS 설정
대상 유연한 서버를 배포하고 구성한 후에는 단일 서버를 유연한 서버로 마이그레이션하도록 DMS를 설정해야 합니다.
리소스 공급자 등록
Microsoft.DataMigration 리소스 공급자를 등록하려면 다음 단계를 수행합니다.
첫 번째 DMS 인스턴스를 만들기 전에 Azure Portal에 로그인한 다음, 구독을 검색하고 선택합니다.
DMS 인스턴스를 만드는 데 사용할 구독을 선택한 다음, 리소스 공급자를 선택합니다.
"Migration"이라는 용어를 검색한 다음, Microsoft.DataMigration에 대해 등록을 선택합니다.
Database Migration Service 인스턴스 만들기
Azure Portal에서 + 리소스 만들기를 선택하고, Azure Database Migration Service를 검색한 다음, 드롭다운 목록에서 Azure Database Migration Service를 선택합니다.
Azure Database Migration Service 화면에서 만들기를 선택합니다.
Migration Service 생성 화면에서 서비스, 구독, 신규 또는 기존 리소스 그룹의 이름을 지정합니다.
가격 책정 계층을 선택하고 네트워킹 화면으로 이동합니다. 오프라인 마이그레이션 기능은 프리미엄 가격 책정 계층에서만 사용할 수 있습니다.
비용 및 가격 책정 계층에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.
목록에서 기존 가상 네트워크를 선택하거나 만들려는 새 가상 네트워크의 이름을 입력합니다. 검토 후 만들기 화면으로 이동합니다. 필요에 따라 태그 화면에서 서비스에 태그를 추가할 수 있습니다.
가상 네트워크는 원본 SQL Server 및 대상 Azure SQL Database 인스턴스에 대한 액세스 권한이 있는 Azure Database Migration Service를 제공합니다.
Azure Portal에서 가상 네트워크를 만드는 방법에 대한 자세한 내용은 Azure Portal을 사용하여 가상 네트워크 만들기 문서를 참조하세요.
구성을 살펴본 후 만들기를 선택하여 서비스를 만듭니다.
마이그레이션 프로젝트 생성
서비스가 생성된 후 Azure Portal에서 서비스를 찾아 연 다음, 새로운 마이그레이션 프로젝트를 만듭니다.
Azure Portal에서 모든 서비스를 선택하고 Azure Database Migration Service를 검색한 다음, Azure Database Migration Services를 선택합니다.
검색 결과에서 마이그레이션 서비스 인스턴스를 선택하고 + 새 마이그레이션 프로젝트를 선택합니다.
새 마이그레이션 프로젝트 화면에서 프로젝트의 이름을 지정하고, 원본 서버 유형 선택 상자에서 MySQL을 선택하고, 대상 서버 유형 선택 상자에서 Azure Database For MySQL을 선택하고, 마이그레이션 작업 유형 선택 상자에서 데이터 마이그레이션을 선택합니다. 활동 생성 및 실행을 선택합니다.
또는 프로젝트만 만들기를 선택하여 지금 마이그레이션 프로젝트를 만들고, 나중에 마이그레이션을 실행할 수도 있습니다.
마이그레이션 프로젝트 구성
원본 선택 화면에서 원본 MySQL 인스턴스에 대한 연결 세부 정보를 지정하고 다음: 대상 선택>>을 선택합니다.
대상 선택 화면에서 대상 Azure Database for MySQL 인스턴스에 대한 연결 세부 정보를 지정하고 다음: 데이터베이스 선택>>을 선택합니다.
데이터베이스 선택 화면에서 마이그레이션을 위한 원본 및 대상 데이터베이스를 매핑하고 다음: 마이그레이션 설정 구성>>을 선택합니다. 원본 서버를 읽기 전용으로 만들기 옵션을 선택하면 원본을 읽기 전용으로 만들 수 있지만 이는 서버 수준 설정이므로 주의해야 합니다. 이 옵션을 선택하는 경우 선택한 데이터베이스뿐만 아니라 전체 서버가 읽기 전용으로 설정됩니다.
대상 데이터베이스의 이름이 원본 데이터베이스와 동일하면 Azure Database Migration Service는 기본적으로 이 대상 데이터베이스를 선택합니다.
마이그레이션 설정 구성 화면에서 마이그레이션에 포함할 테이블을 선택하고 다음: 요약>>을 선택합니다. 데이터가 있는 대상 테이블은 기본적으로 선택되지 않지만 명시적으로 선택할 수 있으며 마이그레이션을 시작하기 전에 잘립니다.
요약 화면의 작업 이름 텍스트 상자에 마이그레이션 작업의 이름을 지정한 다음, 요약 내용을 살펴보고 원본 및 대상 세부 정보가 앞에서 지정한 내용과 일치하는지 확인합니다.
마이그레이션 시작을 선택합니다. 마이그레이션 작업 창이 나타나고, 작업 상태는 초기화 중입니다. 테이블 마이그레이션이 시작되면 상태가 실행 중으로 바뀝니다.
마이그레이션 모니터링
마이그레이션 작업 화면에서 새로 고침을 선택하면 디스플레이가 업데이트되고 완료된 테이블 수에 대한 진행률이 표시됩니다.
작업 화면에서 데이터베이스 이름을 선택하면 마이그레이션되는 각 테이블의 상태를 확인할 수 있습니다. 새로 고침을 선택하여 디스플레이를 업데이트합니다.
마이그레이션 완료
마이그레이션 후 작업
오프라인 마이그레이션에서 단독형 마이그레이션 프로세스는 애플리케이션에 따라 달라지며 이 문서의 범위를 벗어나지만 다음과 같은 마이그레이션 후 작업이 필요합니다.
- 애플리케이션 요구 사항에 따라 로그인, 역할 및 사용 권한을 만듭니다.
- 마이그레이션 전 단계 중에 대상 데이터베이스에서 추출된 모든 트리거를 다시 만듭니다.
- 대상 데이터베이스에 애플리케이션의 온전성 테스트를 수행하여 마이그레이션을 인증합니다.
리소스 정리
Database Migration Service를 계속해서 사용하지 않을 경우 다음 단계에 따라 서비스를 삭제할 수 있습니다.
Azure Portal에서 모든 서비스를 선택하고 Azure Database Migration Service를 검색한 다음, Azure Database Migration Services를 선택합니다.
검색 결과에서 마이그레이션 서비스 인스턴스를 선택하고 서비스 삭제를 선택합니다.
확인 대화 상자의 데이터베이스 마이그레이션 서비스 이름 입력 텍스트 상자에 서비스 이름을 입력하고 삭제를 선택합니다.