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) に関するページを参照してください。
- Azure BLOB コンテナーを作成し、コンテナーの Shared Access Signature (SAS) トークンを取得 (Azure portal または Azure CLI) します。 [アクセス許可] ドロップダウン リストで、[追加]、[作成]、[書き込み] を付与していることを確認します。 BLOB SAS トークンと URL の値をコピーしてセキュリティで保護された場所に貼り付けます。 これらは 1 回だけ表示され、ウィンドウが閉じると取得できなくなります。
- 完全バックアップ ファイルを Azure BLOB ストレージにアップロードします。 こちらの手順に従います。
- オンライン移行を実行するには、cat xtrabackup_info コマンドを実行し、bin_log pos 出力をコピーすることにより、Percona XtraBackup を使って取り込まれたバックアップ ファイルの bin-log 位置を取り込んで格納します。
制限事項
- ソース サーバーの構成は移行されません。 移行先フレキシブル サーバーを適切に構成する必要があります。
- ユーザーとアクセス許可は、Azure Database for MySQL インポートの一部としては移行されません。 Azure Database for MySQL インポートを開始する前にユーザーとアクセス許可の手動ダンプを取得し、インポート操作後にログインを移行先フレキシブル サーバーに復元して移行する必要があります。
- 高可用性 (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_superuser、admin、administrator、root、guest、public にすることはできません。 |
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" に設定すると、サーバーがパブリック アクセス モードに設定されますが、ファイアウォール規則は作成されません。 |
vnet | myVnet | 新規または既存の仮想ネットワークの名前または ID。 別のリソース グループまたはサブスクリプションの vnet を使う場合は、リソース ID を指定します。 名前は 2 文字から 64 文字にする必要があります。 名前は先頭が文字または数字、末尾が文字、数字、アンダースコアでなければならず、中に含めることができるのは文字、数字、アンダースコア、ピリオド、ハイフンのみです。 |
サブネット | mySubnet | 新規または既存のサブネットの名前またはリソース ID。 別のリソース グループまたはサブスクリプションのサブネットを使う場合は、名前の代わりにリソース ID を指定します。 サブネットは flexibleServers に委任されることに注意してください。 委任後、このサブネットを他の種類の Azure リソースに使うことはできません。 |
private-dns-zone | myserver.private.contoso.com | 新規または既存のプライベート DNS ゾーンの名前または ID。 同じリソース グループ、異なるリソース グループ、または異なるサブスクリプションのプライベート DNS ゾーンを使用できます。 別のリソース グループまたはサブスクリプションのゾーンを使う場合は、リソース ID を指定します。ユーザーから指定されなかった場合、CLI は仮想ネットワークと同じリソース グループ内に新しいプライベート DNS ゾーンを作成します。 |
key | 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 秒 |
ストレージ サイズが増加すると、データのコピーに必要な時間もほぼ線形関係で増加します。 ただし、コピー速度はネットワークの変動によって大きな影響を受ける可能性があることに注意することが重要です。 したがって、ここで提供されているデータは参考程度に留める必要があります。