次の方法で共有


Azure Database for MySQL インポート CLI を使って、MySQL のオンプレミスまたは仮想マシン (VM) のワークロードを Azure Database for MySQL - フレキシブル サーバーに移行する

外部移行のための Azure Database for MySQL インポートを使うと、MySQL のオンプレミスまたは仮想マシン (VM) のワークロードを Azure Database for MySQL - フレキシブル サーバーにシームレスに移行できます。 ユーザー指定の物理バックアップ ファイルを使って、ソース サーバーの物理データ ファイルをターゲット サーバーに復元し、シンプルで高速な移行パスを提供します。 インポート後の操作では、価格とパフォーマンスの向上、データベース構成のきめ細かな制御、カスタム メンテナンス期間など、フレキシブル サーバーの利点を活用できます。

ユーザー入力に基づいて、移行先フレキシブル サーバーをプロビジョニングし、Azure BLOB ストレージ アカウントに格納されている移行元サーバーのユーザー指定の物理バックアップを移行先フレキシブル サーバーのインスタンスに復元します。

このチュートリアルでは、Azure Database for MySQL インポート CLI コマンドを使って、移行 MySQL のオンプレミスまたは仮想マシン (VM) のワークロードを Azure Database for MySQL - フレキシブル サーバーに移行する方法について説明します。

Azure Cloud Shell を起動する

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com/bash に移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、 [入力] を選択して実行します。

CLI をローカルにインストールして使用する場合、このチュートリアルでは、Azure CLI バージョン 2.54.0 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

セットアップ

az sign-in コマンドを使用してお使いのアカウントにサインインする必要があります。 id プロパティに注意してください。これは、お使いの Azure アカウントのサブスクリプション 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 である必要があります。
    • システム テーブルスペースのサイズは 12 MB 以上である必要があります。 (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 サポート用のステップ ログを準備します。

      重要

      ソース サーバーからインポートされた破損したテーブルにアクセスしようとすると、フレキシブル サーバーがクラッシュする可能性があります。 そのため、Percona XtraBackup ユーティリティを使用してバックアップを作成する前に、ソース サーバーで "mysqlcheck / Optimize Table" 操作を実行することを強くお勧めします。

  • Azure BLOB コンテナーを作成し、コンテナーの Shared Access Signature (SAS) トークンを取得 (Azure portal または Azure CLI) します。 [アクセス許可] ドロップダウン リストで、[追加]、[作成]、[書き込み] を付与していることを確認します。 BLOB SAS トークンと URL の値をコピーしてセキュリティで保護された場所に貼り付けます。 これらは 1 回だけ表示され、ウィンドウが閉じると取得できなくなります。

  • {backup_dir_path} にある完全バックアップ ファイルを Azure Blob Storage にアップロードします。 こちらの手順に従ってファイルをアップロードします

  • オンライン移行を実行するには、cat xtrabackup_info コマンドを実行し、bin_log pos 出力をコピーすることにより、Percona XtraBackup を使って取り込まれたバックアップ ファイルの bin-log 位置を取り込んで格納します。

  • Azure ストレージ アカウントは、SAS トークンを使用してパブリックにアクセスできる必要があります。 仮想ネットワーク構成を使用する Azure ストレージ アカウントはサポートされていません。

制限事項

  • ソース サーバーの構成は移行されません。 移行先フレキシブル サーバーを適切に構成する必要があります。
  • 暗号化されたバックアップの移行はサポートされていません。
  • ユーザーとアクセス許可は、Azure Database for MySQL インポートの一部としては移行されません。 Azure Database for MySQL インポートを開始する前にユーザーとアクセス許可の手動ダンプを取得し、インポート操作後にログインを移行先フレキシブル サーバーに復元して移行する必要があります。
    • フレキシブル サーバーでの localhost ユーザーの作成はサポートされていないため、user1@localhost を移行できません。
  • 高可用性 (HA) が有効なフレキシブル サーバーは、インポート移行後の移行操作の速度を上げるために、HA が無効なサーバーとして返されます。 移行後に移行先フレキシブル サーバーの HA を有効にします。

最適な移行エクスペリエンスのための推奨事項

  • インポートのパフォーマンスを向上させるために、Azure BLOB ストレージ アカウントと、デプロイする移行先フレキシブル サーバーを同じリージョンにすることを検討してください。
  • 移行先の Azure Database for MySQL フレキシブル サーバーの推奨 SKU 構成 -
    • Azure Database for MySQL インポート操作を実行するときの移行時間を最適化するために、ターゲットにバースト可能 SKU を設定することはお勧めできません。 インポート操作の過程で General Purpose/Business Critical にスケーリングすることをお勧めします。これは、バースト可能 SKU にスケールダウンできます。

Azure Database for MySQL インポート操作をトリガーして、Azure Database for MySQL - フレキシブル サーバーに移行する

az mysql flexible-server import create コマンドを使って、Azure Database for MySQL インポート操作をトリガーします。 次のコマンドは、ターゲット フレキシブル サーバーを作成し、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 インポートをトリガーするための移行元の宛先として機能するデータ ソースの種類。 指定できる値: [azure_blob]。 指定できる値の説明 - azure_blob: Azure BLOB ストレージ。
data-source {resourceID} Azure BLOB コンテナーのリソース ID。
data-source-backup-dir mysql_percona_backup バックアップ ファイルがアップロードされた Azure BLOB ストレージ コンテナーのディレクトリ。 この値は、バックアップ ファイルが Azure BLOB コンテナーのルート フォルダーに格納されていない場合にのみ必要です。
data-source-sas-token {sas-token} Azure BLOB ストレージ コンテナーからインポートするためのアクセス権を付与するために生成された Shared Access Signature (SAS) トークン。
resource-group test-rg 移行先 Azure Database for MySQL フレキシブル サーバーの Azure リソース グループの名前。
mode オフライン Azure Database for MySQL インポートのモード。 受け入れ可能な値: [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_superuseradminadministratorrootguestpublic にすることはできません。
admin-password password 移行先 Azure Database for MySQL フレキシブル サーバーの管理者ユーザーのパスワード。 8 ~ 128 文字にする必要があります。 パスワードには、英大文字、英小文字、数字、英数字以外の文字のうち、3 つのカテゴリの文字が含まれている必要があります。
sku-name GP_Gen5_2 移行先 Azure Database for MySQL フレキシブル サーバーの価格レベルの名前とコンピューティング構成を入力します。 省略表現の {価格レベル} {コンピューティング世代} {仮想コア} という規則に従います。 詳細については、「価格レベル」を参照してください。
バースト可能 移行先 Azure Database for MySQL フレキシブル サーバーのコンピューティング レベル。 受け入れ可能な値: Burstable、GeneralPurpose、MemoryOptimized; 既定値: Burstable。
public-access 0.0.0.0 移行先 Azure Database for MySQL フレキシブル サーバーのパブリック アクセスを決定します。 IP の許可リストに含める IP アドレスの 1 つまたは範囲を入力します。 IP アドレス範囲はダッシュで区切る必要があり、スペースは含まれません。 0.0.0.0 を指定すると、Azure 内にデプロイされたすべてのリソースからサーバーにアクセスするためのパブリック アクセスが許可されます。 "None" に設定すると、サーバーがパブリック アクセス モードに設定されますが、ファイアウォール規則は作成されません。
仮想ネットワーク myVnet 新規または既存の仮想ネットワークの名前または ID。 別のリソース グループまたはサブスクリプションの仮想ネットワークを使用する場合は、リソース ID を指定します。 名前は 2 文字から 64 文字にする必要があります。 名前は先頭が文字または数字、末尾が文字、数字、アンダースコアでなければならず、中に含めることができるのは文字、数字、アンダースコア、ピリオド、ハイフンのみです。
サブネット mySubnet 新規または既存のサブネットの名前またはリソース ID。 別のリソース グループまたはサブスクリプションのサブネットを使う場合は、名前の代わりにリソース ID を指定します。 サブネットは flexibleServers に委任されます。 委任後、このサブネットを他の種類の Azure リソースに使うことはできません。
private-dns-zone myserver.private.contoso.com 新規または既存のプライベート DNS ゾーンの名前または ID。 同じリソース グループ、異なるリソース グループ、または異なるサブスクリプションのプライベート DNS ゾーンを使用できます。 別のリソース グループまたはサブスクリプションのゾーンを使用する場合は、リソース ID を指定します。 ユーザーから指定されなかった場合、CLI は仮想ネットワークと同じリソース グループ内に新しいプライベート DNS ゾーンを作成します。
キー testKey のキー識別子 データ暗号化用の主キーコンテナー キーのリソース ID。
ID testIdentity データ暗号化用のユーザー割り当て ID の名前またはリソース ID。
storage-size 32 移行先 Azure Database for MySQL フレキシブル サーバーのストレージ容量。 最小値は 20 GiB、最大値は 16 TiB です。
tags key=value Azure リソース グループの名前を指定します。
version 5.7 移行先 Azure Database for MySQL フレキシブル サーバーのサーバーのメジャー バージョン。
high-availability 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 の既定値は free IOPS です。 コンピューティングとストレージに基づく IOPS の詳細については、「Azure Database for MySQL フレキシブル サーバーの IOPS」を参照してください。

ダウンタイムを最小限に抑えてフレキシブル サーバーに移行する

Azure Database for MySQL インポートを使ってバックアップ ファイルからの初期シード処理を完了した後にオンライン移行を実行するには、こちらの手順に従って、移行元と移行先の間のデータイン レプリケーションを構成します。 Percona XtraBackup を使ってバックアップ ファイルを取り込むときに取り込まれた bin-log の位置を使って、bin-log の位置ベースのレプリケーションを設定できます。

Azure Database for MySQL インポートが MySQL インスタンスを移行するのにどれくらい時間がかかりますか?

ストレージ サイズに基づくベンチマーク パフォーマンス。

バックアップ ファイルのストレージ サイズ インポート時間
1 GiB 0 分 23 秒
10 GiB 4 分 24 秒
100 GiB 10 分 29 秒
500 GiB 13 分 15 秒
1 TB (テラバイト) 22 分 56 秒
10 TB 2 時間 5 分 30 秒

ストレージ サイズが増加すると、データのコピーに必要な時間もほぼ線形関係で増加します。 ただし、ネットワークの変動はコピー速度に大きな影響を与える可能性があることに注意することが重要です。 したがって、ここで提供されているデータは参考程度に留める必要があります。

次のステップ