オンプレミスの MySQL データベースを Azure に移行する

完了

企業が Azure Database for MySQL への移行を決定したら、次の手順は、オンプレミス データベースを移行する方法を計画し、データを移動するためのツールを選択することです。

Azure Database for MySQL によって Azure で MySQL がどのようにサポートおよびスケーリングされたかを探索した後は、既存のオンプレミス データベースをどのように移行するかを検討します。

このユニットでは、Azure portal を使用して Azure Database for MySQL サービスのインスタンスを作成する方法について説明します。 このサービスのインスタンスを多数作成する必要がある場合は、Azure CLI を使用してこのプロセスをスクリプト化できます。

ポータルを使用して Azure Database for MySQL を作成する

Azure portal で、[Azure Marketplace][データベース] コマンドを選択し、[Azure Database for MySQL] を選択します。

[Azure Marketplace] の [Azure Database for MySQL] 項目を示す画像

サービスの詳細を入力します。 次の設定があります。

  • [サーバー名] : これは、小文字、数字、およびハイフンのみを含む 3 から 63 文字の一意の名前である必要があります。
  • [データ ソース]。 移行のために新しいサーバーを作成する場合は、[なし] を選択します。 [バックアップ] オプションを使用すると、Azure Database for MySQL の別のインスタンスから取得したバックアップをこのサービスに復元することができます。
  • [管理者ユーザー名]。 これは、管理特権で作成されるユーザー アカウントの名前です。 Azure では、独自に使用するために作成されるいくつかのアカウントがあるほかに、制限されている名前があります。azure_superuseradminadministratorrootguest、または public は使用できません。
  • [パスワード]。 これは 8 から 128 文字である必要があります。 大文字と小文字、数字、および英数字以外の文字を組み合わせる必要があります。 Azure Database for MySQL では、現在、パスワード認証のみがサポートされており、Microsoft Entra ID との統合はまだ利用できません。
  • バージョン。 移行するオンプレミス データベースに対応するバージョンを選択します。
  • [コンピューティングとストレージ][サーバーの構成] を選択して価格レベルを設定し、サービスに必要なリソースを指定します。 これらのオプションについては、レッスン 1 で説明しました。 [General Purpose] または [メモリ最適化] の価格レベルを選択した場合は、後で仮想プロセッサのコア数をスケールアップまたはスケールダウンできることに注意してください。 ただし、ストレージの量を減らすことはできません。サーバーが作成された後は、増やすことしかできません。

Azure portal での Azure Database for MySQL のサンプル構成を示すスクリーンショット。

[確認および作成] を選択してサービスをデプロイします。 デプロイには数分かかります。

サービスがデプロイされたら、レッスン 1 の「クライアント接続」のトピックに説明されているように、[接続のセキュリティ] オプションを選択し、適切なファイアウォール規則を追加して、クライアントが接続できるようにします。 また、[Azure サービスへのアクセスを許可する] オプションも選択する必要があります。

Azure CLI を使用して Azure Database for MySQL インスタンスを作成する

Azure Database for MySQL のインスタンスを作成するには、az mysql server create コマンドを使用します。 次のステートメントは、MySQL インスタンスを作成する例を示しています。 以下を除いて、ほとんどのパラメーターは自明です。

  • sku-name。 これは、価格レベル (Basic の場合は B、General Purpose の場合は GP、メモリ最適化の場合は MO)、コンピューティング世代 (Gen4 または Gen5)、および仮想 CPU コアの数の組み合わせから構築します。 次の例では、General Purpose 価格レベルを使用して Gen5 世代の 4 つの CPU コアを備えたサーバーを作成しています。
  • storage-size。 これは、必要なディスク ストレージの量で、メガバイト単位で指定します。 次の例では、10 ギガバイトを割り当てています。
az mysql server create \
  --name contoso-MySQL-server \
  --resource-group MySQLrg \
  --admin-user contosoadmin \
  --admin-password 7Hh7*ku5k$$£jhk \
  --sku-name GP_Gen5_4 \
  --storage-size 10240

オフライン移行を実行する

オフライン移行では、特定の時点のソース データベースの "スナップショット" を作成し、そのデータをターゲット データベースにコピーします。 スナップショットの作成後にソース データに加えられた変更はターゲット データベースに反映されません。

Azure Database for MySQL へのオフライン移行を実行する場合は、少なくとも 2 つの選択肢があります。

エクスポートとインポート

MySQL Workbench などのツールを使用して、MySQL からデータベースをエクスポートし、Azure Database for MySQL にインポートできます。 これは、いくつかのシナリオで役立ちます。

  • インポートするテーブルを選択したい場合。
  • ビュー、ストアド プロシージャ、制約、関数など、エクスポートおよびインポートするデータベース オブジェクトを選択したい場合。
  • 他のソースからのデータも移行したい場合。 たとえば、テキスト ファイルからデータを追加し、mysqlimport を使用してこれらをテーブルとしてデータベースに追加する必要がある場合などです。

MySQL Workbench を使用してエクスポートとインポートを実行できます。 [Server](サーバー) メニューから、[Data Export](データのエクスポート) または [Data Import](データのインポート) を選択します。

注意

mysqldump を使用して、データベース名の後にテーブルの名前を指定することで、特定のテーブルをエクスポートすることもできます。

詳細については、「インポートとエクスポートを使用した MySQL データベースの移行」を参照してください。

ダンプと復元

データベース全体を効率的に移動するには、ダンプと復元を使用します。

ダンプと復元を使用する場合は、いくつかの考慮事項があります。

  • exclude-triggers オプションを使用して、復元中にトリガーが発生しないようにする。
  • single-transaction オプションを使用して、データベース全体を 1 つのトランザクションでダンプする。
  • disable-keys オプションを使用して、プロセス中に外部キー制約が発生するのを無効にする。
  • defer-table-indexes オプションを使用して、復元が完了するまでインデックスの作成を延期する。

mysqldump の詳細については、「mysqldump - データベース バックアップ プログラム」を参照してください。

注意

mysqldump を使用して、データベース名の後にテーブルの名前を指定することで、特定のテーブルをエクスポートすることもできます。

Azure Database Migration Service (DMS)

DMS では、Azure Database for MySQL へのオフライン移行に加えて、リージョン間、リソース グループ間、サブスクリプション間の移行がサポートされているため、ソース サーバーに指定されているものとは異なるリージョン、リソース グループ、サブスクリプションをターゲット サーバー用に選択できます。

ダンプと復元を使用して移行する

ダンプと復元の方法を使用してデータベースを移行するには、次の手順を実行します。

  1. mysqldump コマンドを使用して、データを別のファイルにエクスポートします。

    mysqldump -h [host name] -u [username] -p[password] [database name] > db_data.sql
    

    ここで、db_data.sql は、テキスト エディターを使用して変更する SQL スクリプトです。

  2. Azure Database for MySQL でターゲット データベースを作成します。 これを行うには、Azure CLI を使用します。

    az mysql db create \
        --name [database name] \
        --server-name [server name] \
        --resource-group [azure resource group]
    
  3. mysql コマンドを使用して、データをターゲット データベースにインポートします。

    mysql -h [host name] -u [username] -p[password] [database name] < db_data.sql
    

オンライン移行を実行する

Azure Database for MySQL へのオンライン移行も DMS でサポートされています。 オンライン移行では、移行を高速化するために、ターゲット フレキシブル サーバーに General Purpose 16 仮想コア コンピューティングを選択することをお勧めします。 次の表の詳細に基づいて、移行の完了後にターゲット サーバーの目的のコンピューティング サイズにスケール バックします。

単一サーバーの価格レベル 単一サーバーの仮想コア数 フレキシブル サーバーのコンピューティング サイズ フレキシブル サーバーのコンピューティング レベル
Basic 1 バースト可能 Standard_B1s
Basic 2 バースト可能 Standard_B2s
General Purpose 4 General Purpose Standard_D4ds_v4
General Purpose 8 General Purpose Standard_D8ds_v4

Azure Database for MySQL へのオンライン移行の詳細については、「チュートリアル: Azure portal を介して DMS を使用してオンラインで Azure Database for MySQL - 単一サーバーをフレキシブル サーバーに移行する」を参照してください。