Alibaba Cloud DTS (データ転送サービス)を使用して、ローカルの MySQL インスタンスから POLARDB for MySQL クラスターにデータを移行できます 。 DTS 増分データ移行のストレージエンジンを使用することにより、ローカルアプリケーションのサービスを中断することなく、ローカルの MySQL インスタンスから POLARDB for MySQL クラスターにデータを移行できます。

このトピックでは、DTS を使用してデータをローカルの MySQL から POLARDB for MySQL に移行する方法について説明します。

増分データ移行でサポートされる SQL 操作

ローカルの MySQL から POLARDB for MySQL への増分データ移行の場合 、DTS でサポートされる SQL 操作は以下のとおりです。

INSERT、UPDATE、DELETE、および REPLACE

ALTER TABLE、ALTER VIEW、ALTER FUNCTION、および ALTER PROCEDURE

CREATE DATABASE、CREATE SCHEMA、CREATE INDEX、CREATE TABLE、CREATE PROCEDURE、CREATE

FUNCTION、CREATE TRIGGER、CREATE VIEW、および CREATE EVENT

DROP FUNCTION、DROP EVENT、DROP INDEX、DROP PROCEDURE、DROP TABLE、DROP TRIGGER、および DROP

VIEW

RENAME TABLE および TRUNCATE TABLE

前提条件

  • POLARDB for MySQL クラスターが作成済みであること。
  • POLARDB for MySQL クラスターが作成済みで、読み書き権限が付与済みであること。
  • ローカルの MySQL インスタンスへのリモートアクセス権限がアカウントに付与されていること。 承認コマンドは、grant all privileges on *.* to <username>@'<ipaddress>' identified by "<password>"; です。
    • <username>:ローカルの MySQL データベースにアクセスするためのユーザー名。
    • <ipaddress>:データベースにログインするための IP アドレス。 この値が localhost の場合、データベースにローカルでのみログインできることを示します。 この値が % の場合、任意の IP アドレスを使用してデータベースにログインできることを示します。
    • <password>:ローカルの MySQL データベースにアクセスするためのユーザー名のパスワード。

注意事項

  • 移行タスクを実行する前に、データをバックアップしておくことを推奨します。
  • DTS は、7 日以内に実行された異常なタスクの回復を試みます。 そのため、移行元データベースのデータで移行先データベースに書き込まれたサービスデータが上書きされる可能性があります。 移行タスクの完了後、 revoke コマンドを実行し、移行先インスタンスへのアクセスに使用する DTS アカウントの書き込み許可を取り消す必要があります。

制限事項

  • MySQL 5.6 の移行のみサポートされています。
  • イベントのスキーマ移行は利用できません。
  • DTS は、round (column,precision)メソッドを使用して、MySQL データベースの列の浮動小数点値 (float 値および double 値) を読み取ります。 値の精度が指定されていない場合の精度は、float 値の場合は 38、double 値の場合は 308 です。 したがって、移行の精度がサービスの期待値を満たしているかどうかを確認する必要があります。
  • オブジェクト名マッピングが有効になっている場合、このオブジェクトに依存するその他オブジェクトは移行できません。
  • 増分データ移行を選択した場合、移行元の MySQL インスタンスでバイナリロギングを有効にする必要があります。
  • 増分データ移行を選択した場合は、移行元データベースの binlog_format パラメーターを row に設定する必要があります。
  • 増分データ移行を選択し、移行元の MySQL のバージョンが 5.6 の場合、binlog_row_image パラメーターを full に設定する必要があります。
  • ホスト間の移行または増分データ移行中の再構築により、移行元の MySQL インスタンスで binlog ファイル ID の不具合が発生した場合、移行中の増分データが失われる可能性があります。

移行権限の要件

DTS を使用してローカルの MySQL から POLARDB for MySQL へデータを移行する場合、移行元インスタンスと移行先クラスタの移行アカウントに必要な権限は、移行タイプによって異なります。 下表に、移行タイプと必要な権限を示します。
データベースの種類 スキーマの移行 完全データ移行 増分データ移行
ローカルの MySQL インスタンス select select

super

select

replication slave

replication client

POLARDB for MySQL クラスター 読み書き権限 読み書き権限 読み書き権限

移行プロセス

ローカルの MySQL から POLARDB for MySQL へのデータ移行時にオブジェクト間の依存関係の競合を解決し、移行の成功率を向上させるため、DTS は以下のようなスキーマオブジェクトとデータの移行手順を定義しています。

  1. 移行するスキーマオブジェクト:テーブルおよびビュー
  2. フルモードでデータを移行。
  3. 構造オブジェクト (ストアドプロシージャ、関数、トリガー、および外部キー) を移行。
  4. 増分モードでデータを移行。
増分データ移行が選択されていない場合、完全データ移行の完了後、タスクリストの移行の進行状況はスキーマの移行では 100%、完全なデータ移行では 100% となります。 移行ステータスは移行中 となります。 この時点で、移行タスクは手順 3 で定義されたオブジェクトを移行しています。 このステータスのタスクは終了しないでください。 終了した場合、移行データに不整合が発生する可能性があります。

手順

  1. DTS コンソール にログインします。
  2. 左側のナビゲーションペインで [データ移行] をクリックし、右上に表示される [移行タスクの作成] をクリックします。
  3. (オプション) タスク名を設定します。

    DTS は各タスクの名前を自動的に生成します。 タスク名は一意である必要はありません。 名前は必要に応じて変更できます。 タスクを簡単に識別できるよう、わかりやすい名前を選択することを推奨します。

  4. 移行元データベースと移行先データベースに関する情報を入力します。 下表でパラメーターについて説明しています。
    データベースタイプ 項目 説明
    同期元データベース インスタンスタイプ 同期元のデータベースインスタンスのタイプを設定します。 [パブリック IP アドレスが割り当てられたユーザー作成のデータベース] を選択します。
    インスタンスのリージョン ローカルの MySQL インスタンスが存在するリージョンを設定します。
    データベースタイプ 移行元ディスクのタイプを設定します。 [MySQL] を選択します。
    ホスト名または IP アドレス 移行元データベースのパブリック IP アドレス を設定します。
    ポート番号 移行元データベースのリスニングポートを設定します。
    データベースアカウント 移行元データベースに対する読み書き権限を持つアカウントを設定します。
    データベースパスワード データベースにアクセスするアカウントのパスワードを設定します。
    同期先データベース インスタンスタイプ 移行先インスタンスの ID を設定します。 [POLARDB] を選択します。
    インスタンスのリージョン POLARDB for MySQL クラスターが存在するリージョンを設定します。
    POLARDB インスタンスの ID 選択したリージョン内の移行先インスタンスの ID を設定します。
    データベースアカウント 移行先インスタンスに対する読み書き権限を持つアカウントを設定します。
    データベースパスワード 移行先インスタンスにアクセスするためのアカウントのパスワードを設定します。
  5. [接続テスト] をクリックします。 移行元データベースと移行先データベースの両方がテストに合格することを確認します。
  6. [ホワイトリストを設定して次のステップに進む] をクリックします。
  7. 移行オブジェクトと移行タイプを選択します。
    • 移行タイプ
      • スキーマの移行

        DTS は、移行オブジェクトのスキーマ定義を移行先クラスターに移行します。 DTS は、現時点で以下のスキーマ移行用オブジェクトをサポートしています: テーブル、ビュー、トリガー、ストアドプロシージャ、およびストアドファンクション

      • 完全データ移行

        DTS は、移行オブジェクトのすべてのデータを移行先クラスターに移行します。 完全データ移行中に同時挿入が実行され、移行先インスタンスのテーブルにセグメントが作成されます。 完全データ移行タスクが完了すると、移行先インスタンスのテーブルスペースは移行元インスタンスのテーブルスペースより大きくなります。

        完全なデータ移行のみを選択した場合、移行中にローカルの MySQL インスタンスに書き込まれたデータが移行先の POLARDB for MySQL クラスターに同期されません。

      • 増分データ移行

        DTS は、移行先クラスターへの移行中に移行元インスタンスで変更されたデータを同期します。 移行中にデータ定義言語 (DDL) 操作が実行された場合、スキーマの変更は移行先クラスターに同期されません。

      完全なデータ移行のみを実行する必要がある場合は、移行タイプとしてスキーマ移行と完全データ移行を選択します。

      サービスを中断せずにデータを移行する必要がある場合は、移行タイプとしてスキーマ移行、完全データ移行、増分データ移行を選択します。

      スキーマの移行と完全なデータ移行はどちらも無料ですが、増分データ移行については料金が発生します。
    • 移行オブジェクト :移行するオブジェクトを [利用可能] セクションで選択し、右矢印をクリックして [選択済み] セクションに追加します。

      オブジェクトは、データベース、テーブル、および列です。 デフォルトでは、移行先クラスターに移行されたオブジェクトの名前は移行元インスタンスのオブジェクトの名前と同じです。 移行するオブジェクトの名前が移行元インスタンスと移行先インスタンスで異なる場合は、DTS のオブジェクト名マッピング機能を使用する必要があります。 詳細については、 「データベース、テーブル、列名のマッピング 」をご参照ください。

      • 現在、システムテーブルは移行できません。
      • 移行先インスタンスに移行されたオブジェクトの名前が一意であることを確認してください。 移行先インスタンスに移行する前にオブジェクトの名前を変更するには、ポインターを [選択済み] セクションのオブジェクトに移動して [編集] をクリックします。
  8. [事前チェック] をクリックします。 事前チェックが成功した場合は、[次へ] をクリックします。
    事前チェックが失敗した場合、失敗した項目の [結果] 列にある [情報] アイコンをクリックして、詳細を表示できます。 指示に従って問題を修正し、事前チェックを再度実行してください。
  9. DTS 注文情報を確認し、 データ転送サービス(従量課金制)のサービス規約の内容を確認します。チェックボックスを選択して同意し、[購入して開始] をクリックします。

    増分データ移行を選択した場合、DTS は移行先クラスターへの移行中に移行元インスタンスのデータ変更を同期します。 移行タスクは自動的に停止しません。 データのみを移行する場合で、増分データ移行に遅延が発生していない場合、移行元データベースへのデータ書き込みを数分間停止することを推奨します。 増分データ移行が再び遅延なしの状態になった後、移行タスクを停止し、サービスを POLARDB for MySQL クラスターに切り替えます。

  10. 移行ステータスを表示する移行先リージョンを選択します。 移行が完了すると、ステータスが完了に変わります。

    これで、ローカルの MySQL からPOLARDB for MySQL へのデータ移行が完了します。