다음을 통해 공유


Azure Database for MySQL 가져오기 CLI를 사용하여 MySQL 온-프레미스 또는 VM(Virtual Machine) 워크로드를 Azure Database for MySQL로 마이그레이션

외부 마이그레이션을 위한 Azure Database for MySQL Import를 사용하면 MySQL 온-프레미스 또는 VM(가상 머신) 워크로드를 Azure Database for MySQL - 유연한 서버로 원활하게 마이그레이션할 수 있습니다. 사용자가 제공한 물리적 백업 파일을 사용하고 원본 서버의 물리적 데이터 파일을 간단하고 빠른 마이그레이션 경로를 제공하는 대상 서버로 복원합니다. 가져오기 후 작업을 수행하면 더 나은 가격 및 성능, 데이터베이스 구성에 대한 세분화된 제어, 사용자 지정 유지 관리 기간 등 유연한 서버의 이점을 활용할 수 있습니다.

사용자 입력에 따라 대상 유연한 서버를 프로비전한 다음, Azure Blob Storage 계정에 저장된 원본 서버의 사용자가 제공한 물리적 백업을 대상 유연한 서버 인스턴스로 복원해야 합니다.

이 자습서에서는 Azure Database for MySQL Import CLI 명령을 사용하여 Migrate MySQL 온-프레미스 또는 VM(가상 머신) 워크로드를 Azure Database for MySQL - 유연한 서버로 마이그레이션하는 방법을 설명합니다.

Azure Cloud Shell 시작

Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.

Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 사용해 보세요를 선택합니다. 또한 https://shell.azure.com/bash로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 열 수도 있습니다. 복사를 선택하여 코드 블록을 복사하여 Cloud Shell에 붙여넣고, Enter를 선택하여 실행합니다.

이 자습서에서 CLI를 로컬로 설치하여 사용하려면 Azure CLI 버전 2.54.0 이상이 필요합니다. 버전을 확인하려면 az --version을 실행합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

설정

az sign-in 명령을 사용하여 계정에 로그인해야 합니다. Azure 계정의 구독 ID를 참조하는 ID 속성을 기록해 둡니다.

az login

az account set 명령을 사용하여 대상 유연한 서버를 배포하려는 계정에서 특정 구독을 선택합니다. 명령에서 subscription 인수 값으로 사용할 az login 출력의 ID 값을 기록해 둡니다. 모든 구독을 가져오려면 az account list를 사용합니다.

az account set --subscription <subscription id>

필수 조건

  • 원본 서버에는 다음 매개 변수가 있어야 합니다.

    • Lower_case_table_names = 1
    • Innodb_file_per_table = ON
    • 시스템 테이블스페이스 이름은 ibdata1이어야 합니다.
    • 시스템 테이블스페이스 크기는 12MB보다 크거나 같아야 합니다. (MySQL 기본값)
    • Innodb_page_size = 16348(MySQL 기본값)
    • INNODB 엔진만 지원됩니다.
  • Percona XtraBackup을 사용하여 MySQL 워크로드의 물리적 백업을 수행합니다. 다음은 Percona XtraBackup을 사용하여 전체 백업을 수행하는 단계입니다.

    • 온-프레미스 또는 VM 워크로드에 Percona XtraBackup을 설치합니다. MySQL 엔진 버전 v5.7의 경우 Percona XtraBackup 버전 2.4를 설치하고 Percona XtraBackup 2.4 설치를 참조하세요. MySQL 엔진 버전 v8.0의 경우 Percona XtraBackup 버전 8.0을 설치하고 Percona XtraBackup 8.0 설치를 참조하세요.

    • Percona XtraBackup 2.4를 사용하여 전체 백업을 수행하는 방법에 대한 지침은 전체 백업을 참조하세요. Percona XtraBackup 8.0을 사용하여 전체 백업을 수행하는 방법에 대한 지침은 [전체 백업](https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html)을 참조하세요. 전체 백업을 수행하는 동안 다음 명령을 순서대로 실행합니다.

      • ** xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}**
      • ** xtrabackup --prepare --{backup_dir_path}** (이전 명령과 동일한 백업 경로 제공)
    • Percona XtraBackup 수행 시 고려 사항:

      • 백업 및 준비 단계를 모두 실행해야 합니다.
      • 백업 및 준비 단계에 오류가 없는지 확인합니다.
      • 백업을 유지하고 실패 시 필요한 Azure 지원에 대한 단계 로그를 준비합니다.

      Important

      원본 서버에서 가져온 손상된 테이블에 액세스하려고 하면 유연한 서버가 충돌할 수 있습니다. 따라서 Percona XtraBackup 유틸리티를 사용하여 백업을 수행하기 전에 원본 서버에서 "mysqlcheck/Optimize Table" 작업을 수행하는 것이 좋습니다.

  • Azure Blob 컨테이너를 만들고 컨테이너에 대한 SAS(공유 액세스 서명) 토큰(Azure Portal 또는 Azure CLI)을 가져옵니다. 사용 권한 드롭다운 목록에서 추가, 만들기 및 쓰기를 부여해야 합니다. Blob SAS 토큰 및 URL 값을 복사하여 안전한 위치에 붙여넣습니다. 이는 한 번만 표시되며 창을 닫은 후에는 검색할 수 없습니다.

  • {backup_dir_path}의 전체 백업 파일을 Azure Blob Storage에 업로드합니다. 다음 단계에 따라 파일을 업로드합니다.

  • 온라인 마이그레이션을 수행하려면 cat xtrabackup_info 명령을 실행하고 bin_log 위치 출력을 복사하여 Percona XtraBackup을 통해 가져온 백업 파일의 bin-log 위치를 캡처하고 저장합니다.

  • Azure Storage 계정은 SAS 토큰을 사용하여 공개적으로 액세스할 수 있어야 합니다. 가상 네트워크 구성이 포함된 Azure Storage 계정은 지원되지 않습니다.

제한 사항

  • 원본 서버 구성은 마이그레이션되지 않습니다. 대상 유연한 서버를 적절하게 구성해야 합니다.
  • 암호화된 백업에 대한 마이그레이션은 지원되지 않습니다.
  • 사용자 및 권한은 Azure Database for MySQL Import의 일부로 마이그레이션되지 않습니다. 대상 유연한 서버에서 로그인을 복원하여 가져오기 후 작업 로그인을 마이그레이션하려면 Azure Database for MySQL Import를 시작하기 전에 사용자 및 권한을 수동으로 덤프해야 합니다.
    • 유연한 서버에서 localhost 사용자 만들기를 지원하지 않으므로 user1@localhost를 마이그레이션할 수 없습니다.
  • HA(고가용성) 사용 유연한 서버는 가져오기 마이그레이션 후 마이그레이션 작업의 속도를 높이기 위해 HA 사용 안 함 서버로 반환됩니다. 마이그레이션 후 대상 유연한 서버에 대해 HA를 사용하도록 설정합니다.

최적의 마이그레이션 환경을 위한 권장 사항

  • 가져오기 성능을 향상시키려면 Azure Blob Storage 계정 및 대상 유연한 서버를 동일한 지역에 배포하도록 유지하는 것이 좋습니다.
  • 대상 Azure Database for MySQL 유연한 서버에 대해 권장되는 SKU 구성 –
    • Azure Database for MySQL Import 작업을 실행할 때 마이그레이션 시간을 최적화하기 위해 대상에 대해 버스트 가능한 SKU를 설정하는 것은 권장되지 않습니다. 버스트 가능한 SKU로 스케일 다운될 수 있는 가져오기 작업, 게시 과정에서 범용/중요 비즈니스용으로 크기 조정하는 것이 좋습니다.

Azure Database for MySQL - 유연한 서버에서 마이그레이션하기 위해 Azure Database for MySQL 가져오기 작업 트리거

az mysql flexible-server import create 명령을 사용하여 Azure Database for MySQL Import 작업을 트리거합니다. 다음 명령은 대상 유연한 서버를 만들고 Azure CLI의 로컬 컨텍스트를 사용하여 백업 파일에서 대상 위치로 인스턴스 수준 가져오기를 수행합니다.

az mysql flexible-server import create --data-source-type
                                --data-source
                                --data-source-sas-token
                                --resource-group
                                --name
                                --sku-name
                                --tier
                                --version
                                --location
                                [--data-source-backup-dir]
                                [--storage-size]
                                [--mode]
                                [--admin-password]
                                [--admin-user]
                                [--auto-scale-iops {Disabled, Enabled}]
                                [--backup-identity]
                                [--backup-key]
                                [--backup-retention]
                                [--database-name]
                                [--geo-redundant-backup {Disabled, Enabled}]
                                [--high-availability {Disabled, SameZone, ZoneRedundant}]
                                [--identity]
                                [--iops]
                                [--key]
                                [--private-dns-zone]
                                [--public-access]
                                [--resource-group]
                                [--standby-zone]
                                [--storage-auto-grow {Disabled, Enabled}]
                                [--subnet]
                                [--subnet-prefixes]
                                [--tags]
                                [--vnet]
                                [--zone]

The following example takes in the data source information for your source MySQL server's backup file and target Flexible Server information, creates a target Flexible Server named `test-flexible-server` in the `westus` location and performs an import from backup file to target.

azurecli-interactive
az mysql flexible-server import create --data-source-type "azure_blob" --data-source "https://onprembackup.blob.core.windows.net/onprembackup" --data-source-backup-dir "mysql_backup_percona" –-data-source-token "{sas-token}" --resource-group "test-rg"  --name "test-flexible-server" –-sku-name Standard_D2ds_v4  --tier GeneralPurpose –-version 5.7 -–location "westus"

위의 인수에 대한 세부 정보는 다음과 같습니다.

설정 샘플 값 설명
data-source-type azure_blob Azure Database for MySQL Import를 트리거하기 위한 원본 대상으로 사용되는 데이터 원본의 형식입니다. 허용되는 값은 [azure_blob]입니다. 허용되는 값에 대한 설명 - azure_blob: Azure Blob Storage.
data-source {resourceID} Azure Blob 컨테이너의 리소스 ID입니다.
data-source-backup-dir mysql_percona_backup 백업 파일이 업로드된 Azure Blob Storage 컨테이너의 디렉터리입니다. 이 값은 백업 파일이 Azure Blob 컨테이너의 루트 폴더에 저장되지 않은 경우에만 필요합니다.
data-source-sas-token {sas-token} Azure Blob Storage 컨테이너에서 가져올 수 있는 액세스 권한을 부여하기 위해 생성된 SAS(공유 액세스 서명) 토큰입니다.
resource-group test-rg 대상 Azure Database for MySQL 유연한 서버의 Azure 리소스 그룹 이름입니다.
mode 오프라인 Azure Database for MySQL Import의 모드입니다. 허용되는 값: [Offline]; 기본값: Offline.
location westus 원본 Azure Database for MySQL 유연한 서버의 Azure 위치입니다.
name test-flexible-server 대상 Azure Database for MySQL 유연한 서버의 고유한 이름을 입력합니다. 서버 이름은 소문자, 숫자 및 하이픈(-) 문자만 포함할 수 있으며, 3~63자 사이여야 합니다. 참고: 이 서버는 원본과 동일한 구독, 리소스 그룹 및 지역에 배포됩니다.
admin-user adminuser 대상 Azure Database for MySQL 유연한 서버에 대한 관리자 로그인의 사용자 이름입니다. azure_superuser, admin, administrator, root, guest 또는 public을 사용할 수 없습니다.
admin-password *암호- 대상 Azure Database for MySQL 유연한 서버에 대한 관리자 사용자의 암호입니다. 8~128자 사이여야 합니다. 암호에는 영어 대문자, 영어 소문자, 숫자 및 영숫자가 아닌 문자의 세 범주에 해당하는 문자가 포함되어야 합니다.
sku-name GP_Gen5_2 대상 Azure Database for MySQL 유연한 서버에 대한 가격 책정 계층 및 컴퓨팅 구성의 이름을 입력합니다. {가격 책정 계층}{계산 세대}{vCores} 규칙을 축약형으로 따릅니다. 자세한 내용은 가격 책정 계층을 참조하세요.
계층 버스트 가능 대상 Azure Database for MySQL 유연한 서버의 컴퓨팅 계층입니다. 허용되는 값: Burstable, GeneralPurpose, MemoryOptimized, 기본값: Burstable.
public-access 0.0.0.0 대상 Azure Database for MySQL 유연한 서버에 대한 퍼블릭 액세스를 결정합니다. 허용된 IP 목록에 포함할 단일 IP 주소 또는 IP 주소 범위를 입력합니다. IP 주소 범위는 대시로 구분해야 하며 공백을 포함하지 않습니다. 0.0.0.0을 지정하면 Azure 내에 배포된 모든 리소스에서 공용으로 액세스하여 서버에 액세스할 수 있습니다. "None"으로 설정하면 서버가 퍼블릭 액세스 모드로 설정되지만 방화벽 규칙을 만들지는 않습니다.
가상 네트워크 myVnet 새 가상 네트워크 또는 기존 가상 네트워크의 이름 또는 ID입니다. 다른 리소스 그룹 또는 구독의 가상 네트워크를 사용하려면 리소스 ID를 제공합니다. 이름은 2~64자 사이여야 합니다. 이름은 문자 또는 숫자로 시작하고 문자, 숫자 또는 밑줄로 끝나야 하며 문자, 숫자, 밑줄, 마침표 또는 하이픈만 포함할 수 있습니다.
subnet mySubnet 새 서브넷 또는 기존 서브넷의 이름 또는 리소스 ID입니다. 다른 리소스 그룹 또는 구독의 서브넷을 사용하려면 이름 대신 리소스 ID를 제공합니다. 서브넷은 flexibleServers에 위임됩니다. 위임 후에는 다른 유형의 Azure 리소스에 이 서브넷을 사용할 수 없습니다.
private-dns-zone myserver.private.contoso.com 신규 또는 기존 프라이빗 DNS 영역의 이름 또는 ID입니다. 동일한 리소스 그룹, 다른 리소스 그룹 또는 다른 구독의 프라이빗 DNS 영역을 사용할 수 있습니다. 다른 리소스 그룹 또는 구독의 영역을 사용하려면 리소스 ID를 제공합니다. 사용자가 제공하지 않는 경우 CLI는 가상 네트워크와 동일한 리소스 그룹 내에 새 프라이빗 DNS 영역을 만듭니다.
key testKey의 키 식별자 데이터 암호화를 위한 기본 keyvault 키의 리소스 ID입니다.
identity testIdentity 데이터 암호화를 위한 사용자 할당 ID의 이름 또는 리소스 ID입니다.
storage-size 32 대상 Azure Database for MySQL 유연한 서버의 스토리지 용량입니다. 최소값은 20GiB이고 최대값은 16TiB입니다.
tags key=value Azure 리소스 그룹의 이름을 입력합니다.
version 5.7 대상 Azure Database for MySQL 유연한 서버의 서버 주 버전입니다.
고가용성 ZoneRedundant 대상 Azure Database for MySQL 유연한 서버에 대해 고가용성 기능을 사용(ZoneRedundant 또는 SameZone)하거나 사용하지 않도록 설정합니다. 허용되는 값: Disabled, SameZone, ZoneRedundant, 기본값: Disabled.
영역 1 리소스를 프로비전할 가용성 영역입니다.
standby-zone 3 고가용성을 사용하는 경우 대기 서버의 가용성 영역 정보입니다.
storage-auto-grow Enabled 대상 Azure Database for MySQL 유연한 서버에 대한 스토리지의 자동 증가를 사용하거나 사용하지 않도록 설정합니다. 기본값은 Enabled입니다. 허용되는 값: Disabled, Enabled, 기본값: Enabled.
IOPS 500 대상 Azure Database for MySQL 유연한 서버에 할당할 IOPS 수입니다. 프로비전된 컴퓨팅 및 스토리지에 따라 일정량의 무료 IOPS를 얻을 수 있습니다. IOPS의 기본값은 무료 IOPS입니다. 컴퓨팅 및 스토리지 기반 IOPS에 대한 자세한 내용은 Azure Database for MySQL 유연한 서버의 IOPS를 참조하세요.

가동 중지 시간을 최소화하면서 유연한 서버로 마이그레이션

Azure Database for MySQL 가져오기를 사용하여 백업 파일에서 초기 시드를 완료한 후 온라인 마이그레이션을 수행하려면 여기의 단계를 수행하여 원본과 대상 간에 데이터 내부 복제를 구성할 수 있습니다. Percona XtraBackup을 사용하여 백업 파일을 가져오는 동안 캡처된 bin-log 위치를 사용하여 bin-log 위치 기반 복제를 설정할 수 있습니다.

Azure Database for MySQL Import에서 내 MySQL 인스턴스를 마이그레이션하는 데 시간이 얼마나 걸리나요?

스토리지 크기에 따라 벤치마킹된 성능입니다.

백업 파일 스토리지 크기 가져오기 시간
1GiB 0분 23초
10GiB 4분 24초
100GiB 10분 29초
500GiB 13분 15초
1TB 22분 56초
10TB 2시간 5분 30초

스토리지 크기가 증가함에 따라 데이터 복사에 필요한 시간도 거의 선형 관계로 증가합니다. 그러나 네트워크 변동이 복사 속도에 크게 영향을 줄 수 있다는 점에 유의해야 합니다. 따라서 여기에 제공된 데이터는 참조로만 사용해야 합니다.

다음 단계