Azure Database for MySQL インポート CLI を使ってオンプレミスの MySQL サーバーを移行する

完了

次に、オンプレミスの MySQL サーバーを Azure Database for MySQL フレキシブル サーバーに移行します。 ネットワーク設定によってソース サーバーとターゲット サーバー間の直接接続が禁止されるため、オフライン移行を実行することにしました。 次の図は、手順をまとめたものです。

azure-import-cli-migration-procedure のスクリーンショット。

前提条件

  • ソース サーバーで、次の設定が構成されていることを確認します。

    • 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) トークンが必要です。 パフォーマンスを最適化するには、ストレージとターゲットとなるフレキシブル サーバーを同じリージョンに保持します。

  • データベースに対する変更を防ぐために、アプリケーションをシャットダウンする必要があります。

プロシージャ

  1. MySQL データベースの物理バックアップを作成します。 Percona のオープンソースである XtraBackup ツールを使用します。

    1. これらの instructions (MySQL 8.0 の場合) に従ってツールをインストールします。

    2. 完全バックアップを作成します。次に例を示します。

      xtrabackup --backup --target-dir=/data/backups/
      
  2. 次の手順に従って、バックアップ ファイルを Azure Blob Storage にアップロードします。

  3. 変数を入力した後、このコマンドを実行してインポートをトリガーします。 Standard_D2ds_v4 を変更することで、コンピューティング サイズも変更できます。

    1. 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
      
    2. バックアップ ファイルのサイズに比例して、インポートに時間がかかることが予想されます。 1 GiB バックアップ ファイルのインポートには約 5 分かかりますが、1 TB のファイルには約 23 分かかります。

次の制限事項にご注意ください。

  • ユーザーと権限は移行されません。 インポート操作の完了後にログインを移行する場合は、ユーザーと権限を手動でダンプする必要があります。
  • インポート中は高可用性を利用できないため、移行が完了した後に高可用性を有効にします。

ユーザーと権限を移行した後、アプリケーションをフレキシブル サーバーに接続すると、移行が完了します。

ヒント

または、オンライン移行を実行していた場合は、前に説明したようにエクスポートとインポートを実行した後、ソースからターゲットへのレプリケーションを設定しているはずです。 ターゲットがソースに完全に追い付くと、ソース データベースをシャットダウンする前にアプリケーションをカットオーバーします。