ダウンタイムを最小限に抑えるために、Data Transmission Service (DTS) を使用して PolarDB-X 2.0 インスタンス間でデータを移行します。DTS はスキーマ移行、完全なデータ移行、増分データ移行の 3 種類の移行タイプをサポートしており、移行中もアプリケーションを継続して実行できます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
MySQL 5.7 と互換性のある PolarDB-X 2.0 インスタンス(ソースおよび宛先)をそれぞれ 1 つずつ用意します。
ソースインスタンス内の合計データサイズよりも、より大きな利用可能なストレージ容量を持つ宛先インスタンス
必要な権限に記載されている権限を持つデータベースアカウントを用意します。
制限事項
ソースデータベース
| 制限事項 | 詳細 |
|---|---|
| テーブル制約 | テーブルには PRIMARY KEY または一意制約 (UNIQUE constraint) が必要であり、すべてのフィールド値が一意である必要があります。これを満たさない場合、宛先データベースに重複レコードが生成される可能性があります。 |
| テーブル数(個別テーブル選択時) | 1 つのタスクあたり最大 1,000 テーブルまで対応可能です。この上限を超えるとリクエストエラーが発生します。より多くのテーブルを移行する場合は、複数のタスクを作成するか、データベースレベルでの移行を実行してください。 |
| 帯域幅 | ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、移行速度が低下します。 |
| DDL 操作 | スキーマ移行または完全なデータ移行中に、ソースデータベース上で DDL 操作を実行しないでください。実行すると、タスクが失敗します。 |
| 完全移行中の書き込み | 増分データ移行を含めずに完全なデータ移行のみを実行する場合、移行中にソースに対して書き込み操作を行わないでください。同時書き込みにより、データの不整合が発生する可能性があります。 |
| ネットワークタイプの変更 | 移行中にソースの PolarDB-X 2.0 インスタンスのネットワークタイプを変更した場合、DTS タスク内のネットワーク接続設定も併せて更新してください。 |
増分データ移行のためのバイナリログ要件
増分データ移行を含める場合は、ソースデータベースが以下の要件を満たしていることを確認してください。
| パラメーター | 必須値 | 理由 |
|---|---|---|
| バイナリログ | ON | DTS はバイナリログを読み取って増分変更をレプリケートします。 |
binlog_row_image | full | すべてのカラム値をキャプチャし、正確な競合解決を可能にします。 |
| バイナリログ保持期間(増分移行のみ) | 24 時間以上 | 移行中に DTS が連続したログにアクセスできるように保証します。 |
| バイナリログ保持期間(完全移行+増分移行) | 最低 7 日間 | DTS が完全移行の開始ポイントから再開できるよう、十分な履歴を確保します。 |
バイナリログの保持期間が要件を満たさない場合、DTS がログを取得できず、タスクが失敗する可能性があります。例外的なケースでは、データの不整合や損失が発生する場合もあります。完全なデータ移行が完了した後は、保持期間を 24 時間以上に短縮できます。
DTS は定期的にソースデータベース内の dts_health_check.ha_health_check テーブルを更新し、バイナリログの位置を進めます。
その他の制限事項
宛先の PolarDB-X 2.0 インスタンスは MySQL 5.7 と互換性がある必要があります。
ピーク時間帯を避けて移行を実行してください。完全なデータ移行は、ソースおよび宛先の両方で読み取りおよび書き込みリソースを消費し、サーバー負荷が増加します。
完全なデータ移行後に、宛先の表領域は、同時 INSERT 操作による断片化の影響でソースよりも大きくなります。
DTS は失敗したタスクを最大 7 日間自動的に再試行します。ワークロードを宛先に切り替える前に、失敗したタスクを停止またはリリースしてください。あるいは、宛先における DTS の書き込み権限を削除するために
REVOKEを実行してください。これを行わないと、再開されたタスクによって、宛先のデータがソースのデータで上書きされる可能性があります。
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | Alibaba Cloud からインターネット経由で移行する場合にのみ課金されます。詳細については、「課金概要」をご参照ください。 |
| 増分データ移行 | 課金済み。「課金概要」を参照してください。 |
移行タイプ
DTS は 3 種類の移行タイプをサポートしています。ご要件に応じて組み合わせてご利用ください。
| 移行タイプ | 機能 | 使用タイミング |
|---|---|---|
| スキーマ移行 | 選択したオブジェクトのスキーマを宛先に移行します。 | データ移行の基盤として必須です。 |
| 完全なデータ移行 | 選択したオブジェクトに格納されている既存の全データを移行します。 | 移行中にソースへの書き込みが発生しない、ワンタイムの移行に適しています。 |
| 増分データ移行 | 完全移行完了後に、ソースから宛先へ変更を継続的にレプリケートします。 | サービス継続性を確保するために、完全なデータ移行と併用します。 |
推奨:サービス継続性およびデータ整合性を維持するため、3 種類すべて(スキーマ移行+完全なデータ移行+増分データ移行)を選択してください。
増分データ移行でサポートされる SQL 操作
| 操作タイプ | サポートされる文 |
|---|---|
| DML(Data Manipulation Language) | INSERT、UPDATE、DELETE |
必要な権限
タスク開始前に、DTS で使用するデータベースアカウントに以下の権限を付与してください。
ソースの PolarDB-X 2.0 インスタンス
| 権限 | 必須 | 目的 |
|---|---|---|
| SELECT | スキーマ移行、完全なデータ移行 | ソースからデータおよびスキーマ定義を読み取ります。 |
| REPLICATION SLAVE | 増分データ移行 | 増分変更のレプリケーションを可能にするためのバイナリログストリーミングを有効化します。 |
| REPLICATION CLIENT | 増分データ移行 | バイナリログの位置およびサーバーのステータスへのアクセスを提供します。 |
| SELECT(移行対象オブジェクト) | 増分データ移行 | 移行対象の特定オブジェクトを読み取ります。 |
宛先の PolarDB-X 2.0 インスタンス
すべての移行タイプにおいて、読み取りおよび書き込み権限が必要です。
移行タスクの作成
ステップ 1:データ移行タスクページへ移動
Data Management (DMS) コンソール にログインします。
トップナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > データ移行 を選択します。
また、新しい DTS コンソールの [データ移行タスクページ] に直接アクセスすることもできます。コンソールのナビゲーションは、使用している DMS コンソールのモードによって異なる場合があります。「シンプルモード」および「ビジネス要件に応じて DMS コンソールを設定する」をご参照ください。
ステップ 2:ソースおよび宛先データベースの構成
データ移行タスク の横にあるドロップダウンリストから、移行対象インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、左上隅のリージョンを選択します。
タスクの作成 をクリックします。
警告ソースおよび宛先インスタンスを選択した後、ページ上部に表示される制限事項を必ず確認してください。これを怠ると、タスクの失敗やデータの不整合が発生する可能性があります。
タスクおよびデータベース接続を構成します。
セクション パラメーター 説明 — タスク名 DTS が自動的に名称を生成します。タスクを識別しやすいように、意味のある名称を指定してください。名称は一意である必要はありません。 ソースデータベース インスタンスの選択 設定を自動入力するため、既存のインスタンスを選択するか、手動で構成してください。 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソースの PolarDB-X 2.0 インスタンスが配置されているリージョンです。 インスタンス ID ソースの PolarDB-X 2.0 インスタンスの ID です。 データベースアカウント ソースのデータベースアカウントです。必要な権限をご参照ください。 データベースパスワード データベースアカウントのパスワードです。 宛先データベース インスタンスの選択 設定を自動入力するため、既存のインスタンスを選択するか、手動で構成してください。 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン 宛先の PolarDB-X 2.0 インスタンスが配置されているリージョンです。 インスタンス ID 宛先の PolarDB-X 2.0 インスタンスの ID です。 データベースアカウント 宛先のデータベースアカウントです。必要な権限をご参照ください。 データベースパスワード データベースアカウントのパスワードです。
ステップ 3:接続性のテスト
接続性のテストと続行 をクリックします。
DTS は、自動的に自社サーバーの CIDR ブロックを Alibaba Cloud データベースインスタンス(ApsaraDB RDS for MySQL や ApsaraDB for MongoDB など)のホワイトリストおよび Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに追加します。データセンターやサードパーティプロバイダーによってホストされている自己管理データベースの場合は、DTS サーバーの CIDR ブロックをデータベースのホワイトリストに手動で追加する必要があります。詳細については、「オンプレミスデータベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストまたはセキュリティグループに追加すると、セキュリティリスクが生じる可能性があります。続行する前に、認証情報の強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストおよびセキュリティグループルールの定期監査、Express Connect・VPN Gateway・Smart Access Gateway を使用したデータベースと DTS の接続など、予防措置を講じてください。
ステップ 4:オブジェクトの選択および移行設定の構成
| パラメーター | 説明 |
|---|---|
| 移行タイプ | 実行する移行タイプを選択します。サービス継続性を確保する場合は、スキーマ移行、完全なデータ移行、増分データ移行 を選択してください。ソースへの書き込みが発生しないワンタイム移行の場合は、スキーマ移行 および 完全なデータ移行 を選択してください。 |
| 競合テーブルの処理モード | [事前チェックとエラーの報告]: ソーステーブルと同じ名前のテーブルが送信先に存在する場合、事前チェックは失敗します。競合を解決するには、オブジェクト名マッピング機能を使用します。「オブジェクト名のマップ」をご参照ください。[エラーを無視して続行]: 名前衝突のチェックをスキップします。スキーマが一致する場合、DTS は一致するプライマリキーを持つレコードをスキップします。スキーマが異なる場合、一部の列のみが移行されるか、タスクが失敗します。注意して使用してください。 |
| ソースオブジェクト | ソースオブジェクト からオブジェクトを選択し、 |
| 選択済みオブジェクト | 移行された単一のオブジェクトの名前を変更するには、[選択したオブジェクト] でオブジェクトを右クリックします。「単一のオブジェクトの名前をマップする」をご参照ください。複数のオブジェクトの名前を変更するには、[一括編集] をクリックします。「一度に複数のオブジェクト名をマップする」をご参照ください。行をフィルターするには、オブジェクトを右クリックして SQL WHERE 条件を指定します。「SQL 条件を使用してデータをフィルターする」をご参照ください。 |
オブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があります。
ステップ 5:高度な設定の構成
次へ:高度な設定 をクリックし、以下の項目を構成します。
| パラメーター | 説明 |
|---|---|
| アラートの設定 | タスクが失敗した場合、または移行遅延がしきい値を超えた場合に通知を受信するには、[はい] を設定します。アラートのしきい値と連絡先を指定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 |
| 失敗した接続の再試行時間 | ソースまたは宛先との接続が切断された後の DTS の再試行時間です。有効範囲:10~1,440 分。デフォルト値:720 分。30 分を超える値を設定してください。再試行期間内に DTS が再接続できた場合、タスクは再開されます。それ以外の場合は、タスクが失敗します。複数のタスクが同一のソースまたは宛先を共有する場合、最も短い再試行期間がすべてのタスクに適用されます。 |
| ETL の構成 | 「[はい]」に設定すると、抽出・変換・書き出し (ETL) 機能を使用して移行中にデータを変換できます。コードエディタに処理文を入力します。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」および「ETL とは?」をご参照ください。 |
| 転送および逆再生タスクのハートビートテーブルに対する SQL 操作の削除有無 | はい:DTS はソースに対してハートビート SQL 操作を書き込みません。DTS インスタンスに遅延値が表示される場合があります。いいえ:DTS はソースに対してハートビート SQL を書き込みます。物理バックアップやクローンなどの機能に影響を与える可能性があります。 |
ステップ 6:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
DTS は移行開始前に事前チェックを実行します。事前チェックに合格した場合にのみ、タスクは進行します。
事前チェックが失敗した場合、またはアラートを返した場合:
失敗した項目:失敗した項目の横にある 詳細の表示 をクリックし、問題を解決した後、再事前チェック をクリックします。
無視できない警告項目: 詳細の表示 をクリックし、問題を解決した後、再び事前チェックを実行します。
無視できる警告項目: 警告詳細の確認 > 無視 > OK をクリックし、その後 再事前チェック をクリックします。警告を無視すると、データの不整合が発生する可能性があります。
ステップ 7:インスタンスの購入および移行の開始
成功率 が 100% に達するまで待機し、次へ:インスタンスの購入 をクリックします。
データ移行インスタンス用の [インスタンスクラス] を選択します。インスタンスクラスは移行速度を決定します。詳細については、「データ移行インスタンスの仕様」をご参照ください。
Data Transmission Service(従量課金)サービス利用規約 をお読みになり、同意してください。
購入して開始 をクリックします。
タスク一覧で移行の進捗状況を監視できます。
ワークロードを宛先への切り替え
これは移行における最もリスクの高いフェーズです。DTS タスクは失敗後、最大 7 日間自動的に再開されます。切り替え後にタスクを停止またはリリースしなかった場合、再開されたタスクによって、宛先のデータがソースのデータで上書きされる可能性があります。
ワークロードを安全に切り替えるには、以下の手順を順に実行してください。
増分移行の遅延が 0 に達し、安定するまで待ちます。これにより、宛先がソースと同期していることが確認されます。
ソースデータベースへのすべての書き込みトラフィックを停止します。
再度、移行遅延が 0 になるまで待ち、残りの変更がすべてレプリケートされたことを確認します。
アプリケーションの接続文字列を、宛先インスタンスを指すように更新します。
DTS の移行タスクを停止またはリリースします。あるいは、宛先で
REVOKEを実行して、DTS の書き込み権限を削除してください。