온-프레미스 MySQL 데이터베이스를 Azure로 마이그레이션

완료됨

회사에서 Azure Database for MySQL로 이동하기로 결정했다면 다음 단계는 온-프레미스 데이터베이스 마이그레이션 방법을 계획하고 데이터를 이동할 도구를 선택하는 것입니다.

Azure Database for MySQL이 Azure의 MySQL을 지원하고 스케일링하는 방법을 살펴보았으므로 이제 기존 온-프레미스 데이터베이스를 마이그레이션할 방법을 고려해야 합니다.

이 단원에서는 Azure Portal을 사용하여 Azure Database for MySQL 서비스의 인스턴스를 만드는 방법을 알아봅니다. 이 서비스의 여러 인스턴스를 만들어야 하는 경우 Azure CLI를 사용하여 프로세스를 스크립팅할 수 있습니다.

Azure Portal을 사용하여 Azure Database for MySQL 생성

Azure Portal에서 Azure Marketplace데이터베이스 명령을 선택하고 Azure Database for MySQL을 선택합니다.

Azure Marketplace의 Azure Database for MySQL 항목을 보여 주는 이미지

서비스에 대한 세부 정보를 입력합니다. 여기에는 다음이 포함됩니다.

  • 서버 이름. 소문자, 숫자, 하이픈만 포함된 3자에서 63자 사이의 고유한 이름이어야 합니다.
  • 데이터 원본. 마이그레이션을 위해 새 서버를 만드는 경우 없음을 선택합니다. 백업 옵션을 사용하면 Azure Database for MySQL의 다른 인스턴스에서 가져온 백업을 이 서비스로 복원할 수 있습니다.
  • 관리자 사용자 이름. 관리자 권한으로 만들어질 사용자 계정의 이름입니다. Azure는 자체 사용을 위해 계정을 만들며 다른 이름은 제한됩니다. azure_superuser, admin, administrator, root, guest 또는 public은 사용할 수 없습니다.
  • 암호. 8자에서 128자 사이여야 합니다. 대문자, 소문자, 숫자 및 영숫자가 아닌 문자를 혼합하여 포함해야 합니다. Azure Database for MySQL은 현재 암호 인증만 지원합니다. Microsoft Entra ID와의 통합은 아직 사용할 수 없습니다.
  • 버전. 마이그레이션할 온-프레미스 데이터베이스에 해당하는 버전을 선택합니다.
  • 컴퓨팅 + 스토리지. 서버 구성을 선택하여 가격 책정 계층을 설정하고 서비스에 필요한 리소스를 지정합니다. 이 옵션은 1단원에서 설명했습니다. 범용 또는 메모리 최적화 가격 책정 계층을 선택하는 경우 나중에 가상 프로세서 코어 수를 스케일 업 및 스케일 다운할 수 있습니다. 하지만 스토리지 크기는 줄일 수 없습니다. 서버를 생성된 후 늘릴 수만 있습니다.

Azure Portal의 Azure Database for MySQL에 대한 샘플 구성을 보여주는 스크린샷.

검토 + 생성를 선택하여 서비스를 배포합니다. 배포하는 데는 시간이 몇 분 정도 걸립니다.

서비스를 배포한 후 1단원의 클라이언트 연결 항목에 설명된 대로 연결 보안 옵션을 선택하고 클라이언트에서 연결할 수 있도록 적절한 방화벽 규칙을 추가합니다. Azure 서비스에 대한 액세스 허용 옵션도 선택해야 합니다.

Azure CLI를 사용하여 Azure Database for MySQL 인스턴스 생성

Azure Database for MySQL 인스턴스는 az mysql server create 명령을 사용하여 생성합니다. 아래의 문은 MySQL 인스턴스를 만드는 예를 보여 줍니다. 대부분의 매개 변수는 다음 경우를 제외하고는 설명 없이도 쉽게 이해할 수 있습니다.

  • sku-name. 이 매개 변수는 가격 책정 계층(기본의 경우 B, 범용의 경우 GP, 메모리 최적화의 경우 MO), 컴퓨팅 세대(Gen4 또는 Gen5), 가상 CPU 코어 수의 조합으로 구성됩니다. 아래 예에서는 Gen5 세대의 CPU 코어가 4개인 범용 가격 책정 계층을 사용하여 서버가 만들어집니다.
  • storage-size. 메가바이트 단위로 지정된, 필요한 디스크 스토리지 크기입니다. 아래 예에서는 10GB를 할당합니다.
az mysql server create \
  --name contoso-MySQL-server \
  --resource-group MySQLrg \
  --admin-user contosoadmin \
  --admin-password 7Hh7*ku5k$$£jhk \
  --sku-name GP_Gen5_4 \
  --storage-size 10240

오프라인 마이그레이션 수행

오프라인 마이그레이션은 특정 시점에 원본 데이터베이스의 스냅샷을 생성하고 대상 데이터베이스에 해당 데이터를 복사합니다. 스냅샷이 생성된 후 원본 데이터를 변경하면 대상 데이터베이스에 변경 내용이 반영되지 않습니다.

Azure Database for MySQL로 오프라인 마이그레이션을 수행하려는 경우 두 개 이상의 옵션을 사용할 수 있습니다.

내보내기 및 가져오기

MySQL Workbench와 같은 도구를 사용하여 MySQL에서 데이터베이스를 내보내고 Azure Database for MySQL로 가져올 수 있습니다. 이 옵션은 다음과 같은 다양한 시나리오에 유용합니다.

  • 가져올 테이블을 선택하려고 합니다.
  • 뷰, 저장 프로시저, 제약 조건, 함수 등 내보내고 가져올 데이터베이스 개체를 선택하려고 합니다.
  • 다른 원본의 데이터도 마이그레이션하려고 합니다. 예를 들어 텍스트 파일의 데이터를 추가하고 mysqlimport를 사용하여 이러한 데이터를 데이터베이스에 테이블로 추가해야 합니다.

MySQL Workbench를 사용하여 내보내기 및 가져오기를 수행할 수 있습니다. 서버 메뉴에서 데이터 내보내기 또는 데이터 가져오기를 선택합니다.

참고

mysqldump를 통해 데이터베이스 이름 뒤에 이름을 나열하여 특정 테이블을 내보낼 수도 있습니다.

자세한 내용은 가져오기 및 내보내기를 사용하여 MySQL 데이터베이스 마이그레이션을 참조하세요.

덤프 및 복원

전체 데이터베이스를 효율적으로 이동하려면 덤프 및 복원을 사용합니다.

덤프 및 복원을 사용하는 경우 다음과 같은 여러 사항을 고려해야 합니다.

  • exclude-triggers 옵션을 사용하여 복원 중에 트리거 실행을 방지합니다.
  • single-transaction 옵션을 사용하여 전체 데이터베이스를 단일 트랜잭션으로 덤프합니다.
  • disable-keys 옵션을 사용하여 프로세스 중에 외래 키 제약 조건 실행을 사용하지 않도록 합니다.
  • defer-table-indexes 옵션을 사용하여 복원이 완료될 때까지 인덱스 생성를 연기합니다.

mysqldump에 대한 자세한 내용은 mysqldump — A Database Backup Program(데이터베이스 백업 프로그램)을 참조하세요.

참고

mysqldump를 통해 데이터베이스 이름 뒤에 이름을 나열하여 특정 테이블을 내보내기도 합니다.

Azure DMS(Database Migration Service)

Azure Database for MySQL로의 오프라인 마이그레이션 외에도 DMS는 지역 간, 리소스 그룹 간 및 구독 간 마이그레이션을 지원하므로 원본 서버에 지정된 것과 다른 대상 서버에 대한 지역, 리소스 그룹 및 구독을 선택할 수 있습니다.

덤프 및 복원을 사용하여 마이그레이션

덤프 및 복원 방법을 사용하여 데이터베이스를 마이그레이션하려면 다음 단계를 수행합니다.

  1. mysqldump 명령을 사용하여 데이터를 다른 파일로 내보냅니다.

    mysqldump -h [host name] -u [username] -p[password] [database name] > db_data.sql
    

    이 시점에는 db_data.sql이 텍스트 편집기를 사용하여 수정하는 SQL 스크립트입니다.

  2. Azure Database for MySQL에 대상 데이터베이스를 생성합니다. 이 작업은 Azure CLI를 사용하여 수행합니다.

    az mysql db create \
        --name [database name] \
        --server-name [server name] \
        --resource-group [azure resource group]
    
  3. mysql 명령을 사용하여 데이터를 대상 데이터베이스로 가져옵니다.

    mysql -h [host name] -u [username] -p[password] [database name] < db_data.sql
    

온라인 마이그레이션 수행

DMS는 Azure Database for MySQL로의 온라인 마이그레이션도 지원합니다. 온라인 마이그레이션의 경우 더 빠른 마이그레이션을 위해 대상 유연한 서버에 대해 범용 16개 vCore 컴퓨팅을 선택하는 것이 좋습니다. 다음 표의 세부 정보를 기반으로 마이그레이션이 완료된 후 대상 서버의 원하는 컴퓨팅 크기로 다시 확장합니다.

단일 서버 가격 책정 계층 단일 서버 VCore 유연한 서버 컴퓨팅 크기 유연한 서버 컴퓨팅 계층
Basic 1 버스트 가능 Standard_B1s
Basic 2 버스트 가능 Standard_B2s
범용 4 범용 Standard_D4ds_v4
범용 8 범용 Standard_D8ds_v4

Azure Database for MySQL로의 온라인 마이그레이션에 대한 자세한 내용은 자습서: Azure Portal을 통해 DMS를 사용하여 온라인으로 Azure Database for MySQL - 단일 서버를 유연한 서버로 마이그레이션을 참조하세요.