Azure Database for MySQL インポート CLI を使ってオンプレミスの MySQL サーバーを移行する
次に、オンプレミスの MySQL サーバーを Azure Database for MySQL フレキシブル サーバーに移行します。 ネットワーク設定によってソース サーバーとターゲット サーバー間の直接接続が禁止されるため、オフライン移行を実行することにしました。 次の図は、手順をまとめたものです。
前提条件
ソース サーバーで、次の設定が構成されていることを確認します。
-
lower_case_table_names = 1 innodb_file_per_table = ON innodb_page_size = 16348 (MySQL Default)
システム テーブルスペース名は
ibdata1
にする必要があります。システム テーブルスペースのサイズは 12 MB 以上にする必要があります。 (MySQL の既定値)
INNODB エンジンのみがサポートされています。
-
Azure Blob Storage コンテナーを作成します。 適切なコンテナーがない場合は、この quickstart を使用してコンテナーを作成します。 Azure BLOB コンテナーの Shared Access Signature (SAS) トークンが必要です。 パフォーマンスを最適化するには、ストレージとターゲットとなるフレキシブル サーバーを同じリージョンに保持します。
データベースに対する変更を防ぐために、アプリケーションをシャットダウンする必要があります。
プロシージャ
MySQL データベースの物理バックアップを作成します。 Percona のオープンソースである XtraBackup ツールを使用します。
これらの instructions (MySQL 8.0 の場合) に従ってツールをインストールします。
完全バックアップを作成します。次に例を示します。
xtrabackup --backup --target-dir=/data/backups/
次の手順に従って、バックアップ ファイルを Azure Blob Storage にアップロードします。
変数を入力した後、このコマンドを実行してインポートをトリガーします。 Standard_D2ds_v4 を変更することで、コンピューティング サイズも変更できます。
-
az mysql flexible-server import create --data-source-type "azure_blob" --data-source $BLOB_DATA_URL --data-source-backup-dir "mysql_backup_percona" –-data-source-token $SAS_TOKEN --resource-group $RESOURCE_GROUP --name $FLEXIBLE_SERVER_NAME –-sku-name Standard_D2ds_v4 --tier GeneralPurpose –-version 8.0 -–location westus --auto-scale-iops Enabled
バックアップ ファイルのサイズに比例して、インポートに時間がかかることが予想されます。 1 GiB バックアップ ファイルのインポートには約 5 分かかりますが、1 TB のファイルには約 23 分かかります。
-
次の制限事項にご注意ください。
- ユーザーと権限は移行されません。 インポート操作の完了後にログインを移行する場合は、ユーザーと権限を手動でダンプする必要があります。
- インポート中は高可用性を利用できないため、移行が完了した後に高可用性を有効にします。
ユーザーと権限を移行した後、アプリケーションをフレキシブル サーバーに接続すると、移行が完了します。
ヒント
または、オンライン移行を実行していた場合は、前に説明したようにエクスポートとインポートを実行した後、ソースからターゲットへのレプリケーションを設定しているはずです。 ターゲットがソースに完全に追い付くと、ソース データベースをシャットダウンする前にアプリケーションをカットオーバーします。