DMS を使用して MySQL をオンラインの Azure Database for MySQL に移行するMigrate MySQL to Azure Database for MySQL online using DMS

Azure Database Migration Service を使用して、最小限のダウンタイムでデータベースをオンプレミスの MySQL インスタンスから Azure Database for MySQL に移行できます。You can use the Azure Database Migration Service to migrate the databases from an on-premises MySQL instance to Azure Database for MySQL with minimal downtime. つまり、アプリケーションにとって最小限のダウンタイムで移行を実現できます。In other words, migration can be achieved with minimum downtime to the application. このチュートリアルでは、Azure Database Migration Service のオンライン移行アクティビティを使用して、Employees サンプル データベースを MySQL 5.7 のオンプレミス インスタンスから Azure Database for MySQL に移行します。In this tutorial, you migrate the Employees sample database from an on-premises instance of MySQL 5.7 to Azure Database for MySQL by using an online migration activity in the Azure Database Migration Service.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • mysqldump ユーティリティを使用して、サンプル スキーマを移行する。Migrate the sample schema using mysqldump utility.
  • Azure Database Migration Service のインスタンスを作成する。Create an instance of the Azure Database Migration Service.
  • Azure Database Migration Service を使用して移行プロジェクトを作成する。Create a migration project by using the Azure Database Migration Service.
  • 移行を実行する。Run the migration.
  • 移行を監視する。Monitor the migration.

重要

最適な移行エクスペリエンスのために、ターゲット データベースと同じ Azure リージョンに Azure Database Migration Service のインスタンスを作成することをお勧めします。For an optimal migration experience, Microsoft recommends creating an instance of the Azure Database Migration Service in the same Azure region as the target database. リージョンや地域をまたいでデータを移動する場合、移行プロセスが遅くなり、エラーが発生する可能性があります。Moving data across regions or geographies can slow down the migration process and introduce errors.

前提条件Prerequisites

このチュートリアルを完了するには、以下を実行する必要があります。To complete this tutorial, you need to:

  • MySQL Community Edition 5.6 または 5.7 をダウンロードしてインストールします。Download and install MySQL community edition 5.6 or 5.7. オンプレミスの MySQL のバージョンは、Azure Database for MySQL の バージョンと一致している必要があります。The on-premises MySQL version must match with Azure Database for MySQL version. たとえば、MySQL 5.6 は Azure Database for MySQL 5.6 にのみ移行でき、5.7 にアップグレードすることはできません。For example, MySQL 5.6 can only migrate to Azure Database for MySQL 5.6 and not upgraded to 5.7.
  • Azure Database for MySQL でインスタンスを作成しますCreate an instance in Azure Database for MySQL. Azure Portal を使用したデータベースの接続と作成方法の詳細については、「MySQL Workbench を使用した接続とデータの照会」を参照してください。Refer to the article Use MySQL Workbench to connect and query data for details about how to connect and create a database using the Azure portal.
  • Azure Resource Manager デプロイ モデルを使用して、Azure Database Migration Service 用の VNET を作成します。これで、ExpressRoute または VPN を使用したオンプレミスのソース サーバーとのサイト間接続を確立します。Create a VNET for the Azure Database Migration Service by using the Azure Resource Manager deployment model, which provides site-to-site connectivity to your on-premises source servers by using either ExpressRoute or VPN.
  • Azure Virtual Network (VNET) のネットワーク セキュリティ グループの規則によって、通信ポート 443、53、9354、445、12000 がブロックされていないことを確認します。Ensure that your Azure Virtual Network (VNET) Network Security Group rules do not block the following communication ports 443, 53, 9354, 445, 12000. Azure VNET NSG トラフィックのフィルター処理の詳細については、「ネットワーク セキュリティ グループによるネットワーク トラフィックのフィルタリング」を参照してください。For more detail on Azure VNET NSG traffic filtering, see the article Filter network traffic with network security groups.
  • データベース エンジン アクセスのために Windows ファイアウォールを構成します。Configure your Windows Firewall for database engine access.
  • Azure Database Migration Service がソース MySQL Server にアクセスできるように Windows ファイアウォールを開きます。既定では TCP ポート 3306 が使用されています。Open your Windows firewall to allow the Azure Database Migration Service to access the source MySQL Server, which by default is TCP port 3306.
  • ソース データベースの前でファイアウォール アプライアンスを使用する場合は、Azure Database Migration Service が移行のためにソース データベースにアクセスできるように、ファイアウォール規則を追加することが必要な場合があります。When using a firewall appliance in front of your source database(s), you may need to add firewall rules to allow the Azure Database Migration Service to access the source database(s) for migration.
  • Azure Database for MySQL のサーバー レベルのファイアウォール規則を作成して、Azure Database Migration Service がターゲット データベースにアクセスできるようにします。Create a server-level firewall rule for Azure Database for MySQL to allow the Azure Database Migration Service access to the target databases. Azure Database Migration Service に使用される VNET のサブネット範囲を指定します。Provide the subnet range of the VNET used for the Azure Database Migration Service.
  • ソース MySQL は、サポートされている MySQL Community Edition で実行されている必要があります。The source MySQL must be on supported MySQL community edition. MySQL インスタンスのバージョンを確認するには、MySQL ユーティリティまたは MySQL Workbench で、次のコマンドを実行します。To determine the version of MySQL instance, in the MySQL utility or MySQL Workbench, run the following command: SELECT @@version;
  • Azure Database for MySQL は、InnoDB テーブルのみをサポートします。Azure Database for MySQL supports only InnoDB tables. MyISAM テーブルを InnoDB に変換するには、MyISAM から InnoDB へのテーブルの変換に関する記事を参照してください。To convert MyISAM tables to InnoDB, see the article Converting Tables from MyISAM to InnoDB

  • 次の構成を使用して、ソース データベースの my.ini (Windows) または my.cnf (Unix) ファイルのバイナリ ログを有効にします。Enable binary logging in the my.ini (Windows) or my.cnf (Unix) file in source database by using the following configuration:

  • ユーザーは、次の特権がある ReplicationAdmin ロールを持っている必要があります:The user must have the ReplicationAdmin role with the following privileges:
    • レプリケーション クライアント - 変更処理タスクでのみ必須です。REPLICATION CLIENT - Required for Change Processing tasks only. つまり、全体の読み込みのみのタスクではこの特権は必要ありません。In other words, Full Load only tasks don't require this privilege.
    • レプリケーション レプリカ - 変更処理タスクでのみ必須です。REPLICATION REPLICA - Required for Change Processing tasks only. つまり、全体の読み込みのみのタスクではこの特権は必要ありません。In other words, Full Load only tasks don't require this privilege.
    • スーパー - MySQL 5.6.6 より前のバージョンでのみ必須です。SUPER - Only required in versions earlier than MySQL 5.6.6.

サンプル スキーマを移行するMigrate the sample schema

テーブル スキーマ、インデックス、ストアド プロシージャなどのすべてのデータベース オブジェクトを完了するには、ソース データベースからスキーマを抽出し、データベースに適用する必要があります。To complete all the database objects like table schemas, indexes and stored procedures, we need to extract schema from the source database and apply to the database. スキーマを抽出するには、mysqldump と - - no-data パラメーターを使用できます。To extract schema, you can use mysqldump with - - no-data parameter.

オンプレミス システム内に MySQL employees サンプル データベースがあると仮定した場合、mysqldump を使用してスキーマを移行するためのコマンドは次のようになります。Assuming you have MySQL employees sample database in the on-premise system, the command to do schema migration using mysqldump is:

mysqldump -h [servername] -u [username] -p[password] --databases [db name] --no-data > [schema file path]

例: For example:

mysqldump -h 10.10.123.123 -u root -p --databases employees --no-data > d:\employees.sql

ターゲットの Azure Database for MySQL にスキーマをインポートするには、次のコマンドを実行します。To import schema to Azure Database for MySQL target, run the following command:

mysql.exe -h [servername] -u [username] -p[password] [database]< [schema file path]

例: For example:

mysql.exe -h shausample.mysql.database.azure.com -u dms@shausample -p employees < d:\employees.sql

スキーマに外部キーが含まれている場合、移行の初回の読み込みと継続的同期は失敗します。If you have foreign keys in your schema, the initial load and continuous sync of the migration will fail. MySQL ワークベンチで次のスクリプトを実行して、外部キー削除スクリプトと外部キー追加スクリプトを抽出します。Execute the following script in MySQL workbench to extract the drop foreign key script and add foreign key script.

SET group_concat_max_len = 8192;
    SELECT SchemaName, GROUP_CONCAT(DropQuery SEPARATOR ';\n') as DropQuery, GROUP_CONCAT(AddQuery SEPARATOR ';\n') as AddQuery
    FROM
    (SELECT 
    KCU.REFERENCED_TABLE_SCHEMA as SchemaName,    
    KCU.TABLE_NAME,
    KCU.COLUMN_NAME,
    CONCAT('ALTER TABLE ', KCU.TABLE_NAME, ' DROP FOREIGN KEY ', KCU.CONSTRAINT_NAME) AS DropQuery,
    CONCAT('ALTER TABLE ', KCU.TABLE_NAME, ' ADD CONSTRAINT ', KCU.CONSTRAINT_NAME, ' FOREIGN KEY (`', KCU.COLUMN_NAME, '`) REFERENCES `', KCU.REFERENCED_TABLE_NAME, '` (`', KCU.REFERENCED_COLUMN_NAME, '`) ON UPDATE ',RC.UPDATE_RULE, ' ON DELETE ',RC.DELETE_RULE) AS AddQuery
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU, information_schema.REFERENTIAL_CONSTRAINTS RC
    WHERE
      KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
      AND KCU.REFERENCED_TABLE_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
  AND KCU.REFERENCED_TABLE_SCHEMA = 'SchemaName') Queries
  GROUP BY SchemaName;

クエリの結果内の外部キー削除 (2 列目) を実行して、外部キーを削除します。Run the drop foreign key (which is the second column) in the query result to drop foreign key.

データにトリガー (insert または update トリガー) が含まれている場合は、ソースからのデータのレプリケート前に先立って、ターゲットにデータの整合性が適用されます。If you have trigger in the data (insert or update trigger), it will enforce data integrity in the target ahead of the replicated data from the source. 移行時はターゲットのすべてのテーブル内のトリガーを無効にし、移行の完了後にトリガーを有効にすることをお勧めします。The recommendation is to disable triggers in all the tables at the target during migration, and then enable the triggers after migration is done.

ターゲット データベース内のトリガーを無効にするには、次のコマンドを使用します。To disable triggers in target database, use the following command:

SELECT Concat('DROP TRIGGER ', Trigger_Name, ';') FROM  information_schema.TRIGGERS WHERE TRIGGER_SCHEMA = 'your_schema';

Microsoft.DataMigration リソース プロバイダーを登録するRegister the Microsoft.DataMigration resource provider

  1. Azure portal にサインインし、[すべてのサービス] を選択し、[サブスクリプション] を選択します。Sign in to the Azure portal, select All services, and then select Subscriptions.

    ポータルのサブスクリプションの表示

  2. Azure Database Migration Service のインスタンスを作成するサブスクリプションを選択して、[リソース プロバイダー] を選択します。Select the subscription in which you want to create the instance of the Azure Database Migration Service, and then select Resource providers.

    リソース プロバイダーの表示

  3. 移行を検索し、Microsoft.DataMigration の右側にある [登録] を選択します。Search for migration, and then to the right of Microsoft.DataMigration, select Register.

    リソース プロバイダーの登録

DMS インスタンスを作成するCreate a DMS instance

  1. Azure portal で [+ リソースの作成] を選択し、Azure Database Migration Service を検索して、ドロップダウン リストから [Azure Database Migration Service] を選択します。In the Azure portal, select + Create a resource, search for Azure Database Migration Service, and then select Azure Database Migration Service from the drop-down list.

    Azure Marketplace

  2. [Azure Database Migration Service] 画面で、[作成] を選択します。On the Azure Database Migration Service screen, select Create.

    Azure Database Migration Service インスタンスを作成する

  3. [移行サービスの作成] 画面で、サービスの名前、サブスクリプション、新規または既存のリソース グループを指定します。On the Create Migration Service screen, specify a name for the service, the subscription, and a new or existing resource group.

  4. 既存の仮想ネットワーク (VNET) を選択するか、新しい VNET を作成します。Select an existing virtual network (VNET) or create a new one.

    この VNET が Azure Database Migration Service に、ソース SQL Server とターゲット Azure SQL Database インスタンスへのアクセスを提供します。The VNET provides the Azure Database Migration Service with access to the source SQL Server and the target Azure SQL Database instance.

    Azure portal で VNET を作成する方法の詳細については、Azure portal を使用した仮想ネットワークの作成に関する記事を参照してください。For more information about how to create a VNET in the Azure portal, see the article Create a virtual network using the Azure portal.

  5. 価格レベルを選択します。Select a pricing tier.

    コストと価格レベルの詳細については、価格に関するページを参照してください。For more information on costs and pricing tiers, see the pricing page.

    適切な Azure Database Migration Service レベルの選択について不明な点がある場合は、Azure Database Migration Service (Azure DMS) レベルの選択に関するブログの推奨事項を参照してください。If you need help in choosing the right Azure Database Migration Service tier, refer to the recommendations in the blog posting Choosing an Azure Database Migration Service (Azure DMS) tier.

    Azure Database Migration Service インスタンス設定を構成する

  6. [作成] を選択して、サービスを作成します。Select Create to create the service.

移行プロジェクトを作成するCreate a migration project

サービスが作成されたら、Azure portal 内でそのサービスを探して開き、新しい移行プロジェクトを作成します。After the service is created, locate it within the Azure portal, open it, and then create a new migration project.

  1. Azure ポータルで、[All services](すべてのサービス) を選択し、Azure Database Migration Service を検索して、Azure Database Migration Service を選択します。In the Azure portal, select All services, search for Azure Database Migration Service, and then select Azure Database Migration Services.

    Azure Database Migration Service のすべてのインスタンスを検索する

  2. [Azure Database Migration Services] 画面で、作成した Azure Database Migration Service インスタンスの名前を検索して選択します。On the Azure Database Migration Services screen, search for the name of the Azure Database Migration Service instance that you created, and then select the instance.

    Azure Database Migration Service のインスタンスを検索する

  3. [+ 新しい移行プロジェクト] を選択します。Select + New Migration Project.

  4. [新しい移行プロジェクト] 画面で、プロジェクトの名前を指定し、[ソース サーバーの種類] テキスト ボックスで [MySQL] を選択した後、[対象サーバーの種類] テキスト ボックスで [AzureDbForMySQL] を選択します。On the New migration project screen, specify a name for the project, in the Source server type text box, select MySQL, in the Target server type text box, select AzureDbForMySQL.
  5. [アクティビティの種類を選択します] セクションで、[オンライン データの移行] を選択します。In the Choose type of activity section, select Online data migration

    Database Migration Service プロジェクトを作成する

    注意

    または、[プロジェクトのみを作成します] を選択して移行プロジェクトを作成しておき、移行は後で実行することもできます。Alternately, you can chose Create project only to create the migration project now and execute the migration later.

  6. [保存] を選択します。DMS を使用して正常にデータを移行するための要件を確認した後、[アクティビティの作成と実行] を選択します。Select Save, note the requirements to successfully use DMS to migrate data, and then select Create and run activity.

ソース詳細を指定するSpecify source details

  1. [Add Source Details](ソースの詳細の追加) 画面で、ソース MySQL インスタンスの接続の詳細を指定します。On the Add Source Details screen, specify the connection details for the source MySQL instance.

    [Add Source Details](ソースの詳細の追加) 画面

ターゲット詳細を指定するSpecify target details

  1. [保存] を選択し、[対象の詳細] 画面でターゲット Azure Database for MySQL の接続の詳細を指定します。これは、mysqldump を使用して Employees スキーマがデプロイされた Azure Database for MySQL の事前プロビジョニング済みのインスタンスです。Select Save, and then on the Target details screen, specify the connection details for the target Azure Database for MySQL server, which is the pre-provisioned instance of Azure Database for MySQL to which the Employees schema was deployed by using mysqldump.

    [ターゲットの詳細] 画面

  2. [保存] を選択し、[ターゲット データベースへマッピング] 画面で、移行用のソース データベースとターゲット データベースをマップします。Select Save, and then on the Map to target databases screen, map the source and the target database for migration.

    ターゲット データベースにソース データベースと同じデータベース名が含まれている場合、Azure Database Migration Service は既定でターゲット データベースを選択します。If the target database contains the same database name as the source database, the Azure Database Migration Service selects the target database by default.

    ターゲット データベースにマップする

  3. [保存] を選択し、[移行の概要] 画面で、[アクティビティ名] テキスト ボックスに移行アクティビティの名前を指定します。概要を見直して、ソースとターゲットの詳細が先ほど指定した内容と一致していることを確認します。Select Save, on the Migration summary screen, in the Activity name text box, specify a name for the migration activity, and then review the summary to ensure that the source and target details match what you previously specified.

    移行の概要

移行を実行するRun the migration

  • [移行の実行] を選択します。Select Run migration.

    移行アクティビティ ウィンドウが表示されます。アクティビティの [状態][初期化中] になります。The migration activity window appears, and the Status of the activity is initializing.

移行を監視するMonitor the migration

  1. 移行アクティビティ画面で、移行の [状態][完了] になるまで [最新の情報に更新] を選択して表示を更新します。On the migration activity screen, select Refresh to update the display until the Status of the migration shows as Complete.

    アクティビティの状態 - 完了

  2. [データベース名] で、特定のデータベースを選択して、データ全体の読み込み操作と増分データ同期操作の移行状態を取得します。Under Database Name, select specific database to get to the migration status for Full data load and Incremental data sync operations.

    データ全体の読み込みには初回の読み込みの移行状態が表示され、データ増分同期には変更データ キャプチャ (CDC) の状態が表示されます。Full data load will show the initial load migration status while Incremental data sync will show change data capture (CDC) status.

    アクティビティの状態 - 全体の読み込み完了

    アクティビティの状態 - 増分データ同期

一括移行を実行するPerform migration cutover

初回の全体の読み込みが完了すると、データベースは [一括準備完了] とマークされます。After the initial Full load is completed, the databases are marked Ready to cutover.

  1. データベースの移行を完了する準備ができたら、[一括で開始] を選択します。When you're ready to complete the database migration, select Start Cutover.

    一括で開始

  2. ソース データベースに対するすべての受信トランザクションを必ず停止してください。[保留中の変更] カウンターが 0 を示すまで待ってください。Make sure to stop all the incoming transactions to the source database; wait until the Pending changes counter shows 0.

  3. [確認] を選択し、[適用] を選択します。Select Confirm, and the select Apply.
  4. データベースの移行の状態に [完了] が表示されたら、アプリケーションを新しいターゲット Azure SQL Database に接続します。When the database migration status shows Completed, connect your applications to the new target Azure SQL Database.

次の手順Next steps