Data Transmission Service (DTS) を使用して、PolarDB for MySQL クラスターから PolarDB-X 2.0 インスタンスへデータを同期します。DTS はスキーマ同期、完全データ同期、および増分同期をサポートしているため、ソースデータベースをオンラインのままデータ移行が可能です。
前提条件
開始する前に、以下の点を確認してください。
宛先となる PolarDB-X 2.0 インスタンスが作成済みであること
PolarDB-X 2.0 インスタンスの利用可能なストレージ容量が、ソースとなる PolarDB for MySQL クラスター内の全データサイズより大きいこと
ソースとなる PolarDB for MySQL クラスターでバイナリロギングが有効化されていること(下記「バイナリログの要件」を参照)
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 課金済み。詳細については、「課金概要」をご参照ください。 |
サポートされる同期トポロジ
単方向・一対一同期
単方向・多対一同期
同期可能な SQL 操作
| 操作タイプ | サポートされる文 |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | ALTER TABLE、ALTER VIEW、CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW、DROP INDEX、DROP TABLE、RENAME TABLE、TRUNCATE TABLE |
制限事項
ソースデータベースの要件
同期対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約 (UNIQUE constraint) が必要です。該当しない場合、宛先データベースに重複レコードが発生する可能性があります。
個別のテーブルを同期対象として選択し、宛先データベースでテーブル名またはカラム名を変更する必要がある場合、1 つのタスクで最大 1,000 テーブルまでサポートされます。この上限を超えるとリクエストエラーが返されます。回避策として、作業を複数のタスクに分割するか、個別のテーブルではなくデータベース全体を同期してください。
バイナリログの要件
タスク開始前に、ソースとなる PolarDB for MySQL クラスターでバイナリロギングが正しく設定されている必要があります。
| 要件 | 設定 | 理由 |
|---|---|---|
| バイナリロギングの有効化 | loose_polar_log_bin パラメーターを ON に設定します。 | 有効になっていない場合、事前チェックでエラーが返され、DTS タスクを開始できません。設定手順については、「バイナリロギングの有効化」および「パラメーターの変更」をご参照ください。 |
| ログの保存期間 | 最低でも 3 日、推奨は 7 日に設定します。 | 保存期間が短すぎると、データの不整合や損失が発生する可能性があり、DTS の SLA による補償対象外となります。設定手順については、「保存期間の変更」をご参照ください。 |
バイナリロギングを有効化すると、ログファイルのストレージ料金が発生します。
同期フェーズごとの制限
| フェーズ | 制限 |
|---|---|
| スキーマ同期および完全データ同期 | データベースまたはテーブルのスキーマを変更する DDL 文を実行しないでください。このフェーズ中に DDL 文を実行すると、タスクが失敗します。 |
| 完全データ同期および増分データ同期 | これらのフェーズ中、DTS はセッションレベルで外部キー制約チェックおよびカスケード操作を一時的に無効化します。そのため、ソース側でのカスケード更新および削除操作により、データの不整合が発生する可能性があります。 |
サポートされないオブジェクトおよびデータ型
同期されないデータ型:BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT
プレフィックスインデックスは同期できません。ソースにプレフィックスインデックスが含まれている場合、タスクが失敗する可能性があります。
ソースとなる PolarDB for MySQL クラスターの読み取り専用ノードは同期されません。
ソースとなる PolarDB for MySQL クラスターからの Object Storage Service (OSS) 外部テーブルは同期されません。
注意事項
スキーマ同期の動作: スキーマ同期中、DTS はソースデータベースから宛先データベースへ外部キーを同期します。
パフォーマンスへの影響: 初期完全同期では、両方のデータベースで読み取りおよび書き込みリソースが使用され、サーバー負荷が高まる可能性があります。ピーク時間帯を避けて同期タスクを実行してください。
完全同期後のテーブルスペースサイズ: 初期完全同期中の並列 INSERT 操作により、宛先側でテーブルの断片化が発生します。完全同期完了後、宛先のテーブルスペースはソースよりも大きくなる可能性があります。
ソーステーブルのDDLツール: 同期中に、pt-online-schema-change などのツールを使用してソーステーブルでDDL操作を実行しないでください。タスクは失敗します。送信先に他のソースから書き込みが行われていない場合、Data Management (DMS) を使用して、ソーステーブルでロックなしDDL操作を実行できます。
宛先への書き込み: 同期中は、宛先への書き込みに DTS のみを使用してください。他のソースからの書き込みはデータの不整合を引き起こす可能性があり、DMS によるオンライン DDL 操作実行時にデータ損失が発生する可能性があります。
タスク失敗時の回復: DTS タスクが失敗した場合、DTS テクニカルサポートは 8 時間以内にそれを復旧しようとします。タスクは再起動される可能性があり、回復中にタスクパラメーター (データベースパラメーターではない) が変更される可能性があります。変更される可能性のあるパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。
ハートビートテーブル: DTS は、バイナリログ位置を進めるために、ソースデータベースで定期的に
CREATE DATABASE IF NOT EXISTS `test`を実行します。
同期タスクの作成
ステップ 1:データ同期ページへ移動
以下のいずれかの方法でアクセスしてください。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
画面左上隅から、同期インスタンスが配置されているリージョンを選択します。
DMS コンソール
正確な手順は、使用している DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、Data + AI の上にマウスポインタを合わせ、DTS (DTS) > データ同期 を選択します。
データ同期タスク の右側にあるドロップダウンリストから、同期インスタンスが配置されているリージョンを選択します。
ステップ 2:ソースおよび宛先データベースの設定
タスクの作成 をクリックします。
以下のパラメーターを使用して、ソースおよび宛先データベースを設定します。
警告ソースおよび宛先データベースの設定後、画面上に表示される制限事項を必ず確認してください。このステップを省略すると、タスクが失敗したり、データの不整合が発生したりする可能性があります。
セクション パラメーター 説明 該当なし タスク名 DTS タスクの名前です。DTS が自動生成しますが、識別しやすいように意味のある名前を指定することを推奨します。名前は一意である必要はありません。 ソースデータベース 既存の接続を選択 データベース接続の管理DTS に登録済みのデータベースインスタンスをお使いの場合、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動入力します。詳細については、「」をご参照ください。それ以外の場合は、以下のパラメーターを手動で設定してください。DMS コンソールでは、DMS データベースインスタンスの選択 リストから選択します。 データベースタイプ PolarDB for MySQL を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソースとなる PolarDB for MySQL クラスターが配置されているリージョンです。 PolarDB クラスター ID ソースとなる PolarDB for MySQL クラスターの ID です。 データベースアカウント ソースクラスターのデータベースアカウントです。同期対象のオブジェクトに対する読み取り権限を持つ必要があります。 データベースパスワード データベースアカウントのパスワードです。 暗号化 ソースクラスターへの接続を SSL を使用して暗号化するかどうか。詳細については、「SSL 暗号化の設定」をご参照ください。 宛先データベース 既存の接続を選択 DTS に登録済みのデータベースインスタンスがある場合は、ドロップダウンリストからそのインスタンスを選択します。DTS が残りのパラメーターを自動的に設定します。詳細については、「データベース接続の管理」をご参照ください。それ以外の場合は、以下のパラメーターを手動で設定します。DMS コンソールで、[DMS データベースインスタンスの選択] リストから選択します。 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン 宛先となる PolarDB-X 2.0 インスタンスが配置されているリージョンです。 インスタンス ID 宛先となる PolarDB-X 2.0 インスタンスの ID です。 データベースアカウント 宛先インスタンスのデータベースアカウントです。宛先データベースに対する読み取りおよび書き込み権限を持つ必要があります。 データベースパスワード データベースアカウントのパスワードです。 接続テストと続行 をクリックします。
DTS サーバーの CIDR ブロックが、両方のデータベースのセキュリティ設定に自動的または手動で追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
ステップ 3:同期対象の設定
オブジェクトの設定 ステップで、以下のパラメーターを設定します。
パラメーター 説明 同期タイプ デフォルトでは 増分データ同期 が選択されています。また、スキーマ同期 および 完全データ同期 も必ず選択してください。事前チェックが完了すると、DTS は選択されたオブジェクトの既存データをソースデータベースから宛先クラスターへ同期します。この既存データは、その後の増分同期の基盤となります。 競合テーブルの処理モード 事前チェックとエラー報告オブジェクト名マッピング:宛先にソースと同じ名前のテーブルが存在するかをチェックします。同一の名前が存在する場合、事前チェックは失敗し、タスクを開始できません。名前衝突を解決するには、 機能を使用して宛先のテーブル名を変更してください。エラーを無視して続行:名前衝突チェックをスキップします。スキーマが一致し、宛先のレコードがソースと同じプライマリキーまたは一意キーを持つ場合:完全データ同期中は宛先のレコードが保持され、増分データ同期中は宛先のレコードが上書きされます。スキーマが異なる場合、初期化が失敗するか、一部のカラムのみが同期される可能性があります。このオプションは慎重に使用してください。 ソースオブジェクト ソースオブジェクト セクションからオブジェクトを選択し、右向き矢印アイコンをクリックして 選択済みオブジェクト に移動します。カラム、テーブル、またはデータベースを選択できます。テーブルまたはカラムを選択すると、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトは除外されます。 選択済みオブジェクト 送信先で単一オブジェクトの名前を変更するには、[選択されたオブジェクト] でそのオブジェクトを右クリックします。詳細については、「単一オブジェクトの名前をマップする」をご参照ください。複数のオブジェクトの名前を一度に変更するには、右上隅にある [一括編集] をクリックします。詳細については、「複数のオブジェクト名を一度にマップする」をご参照ください。特定のオブジェクトについて同期される SQL 操作をフィルターするには、そのオブジェクトを右クリックして操作を選択します。行単位でデータをフィルターするには、オブジェクトを右クリックして WHERE 条件を指定します。詳細については、「フィルター条件を指定する」をご参照ください。 次へ:高度な設定 をクリックし、以下のパラメーターを設定します。
パラメーター 説明 タスクスケジューリング用専用クラスター デフォルトでは、DTS は共有クラスターを使用します。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 接続失敗時の再試行時間 タスク開始後にソースまたは宛先データベースに到達不能となった場合の DTS の再試行時間です。有効範囲:10~1440 分。デフォルト値:720 分。30 分より大きい値を設定してください。複数のタスクが同じソースまたは宛先データベースを共有する場合、最も短い再試行時間がすべてのタスクに適用されます。DTS が再試行している間も、インスタンスの課金は継続されます。ソースおよび宛先インスタンスをリリースした後は、できるだけ早く DTS インスタンスもリリースすることを推奨します。 その他の問題発生時の再試行時間 タスク開始後に DDL または DML 操作が失敗した場合の DTS の再試行時間です。有効範囲:1~1440 分。デフォルト値:10 分。10 分より大きい値を設定してください。この値は 接続失敗時の再試行時間 よりも小さくする必要があります。 完全データ同期におけるスロットリングの有効化 完全データ同期中の DTS リソース使用量を制御し、ソースおよび宛先サーバーの負荷を軽減します。ソースデータベースへのクエリ数 (QPS)、完全データ移行の RPS、完全移行のデータ移行速度 (MB/s) を設定します。完全データ同期 が選択されている場合にのみ利用可能です。 増分データ同期におけるスロットリングの有効化 増分同期中の DTS リソース使用量を制御します。増分データ同期の RPS および 増分同期のデータ同期速度 (MB/s) を設定します。 環境タグ DTS インスタンスを識別するために使用する環境タグです。ビジネス要件に応じて環境タグを選択できます。 順方向および逆方向タスクのハートビートテーブルに対する SQL 操作の削除 DTS がハートビートテーブル操作をソースデータベースに書き込むかどうかを指定します。はい:DTS はハートビート操作を書き込まず、インスタンスに遅延が表示される可能性があります。いいえ:DTS はハートビート操作を書き込みますが、ソースデータベースの物理バックアップおよびクローン作成に影響を与える可能性があります。 ETL の設定 ETL (抽出・変換・書き出し) を有効にするかどうか。はい: コードエディタでデータ処理文を設定します。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」をご参照ください。いいえ: ETL をスキップします。概要については、「ETL とは? モニタリングとアラート アラートを設定するかどうか。はい:アラートのしきい値と通知先連絡先を設定します。タスクが失敗した場合、または同期遅延がしきい値を超えた場合にアラートが発行されます。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。いいえ:アラートは発行されません。 [データ検証へ進む] をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 4:事前チェックの実行
このタスクの API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にマウスポインタを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存と事前チェック をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックに合格した場合にのみ、タスクを開始できます。
項目のチェックに失敗した場合、詳細の表示 をクリックし、結果に基づいてトラブルシューティングを行い、再度事前チェックを実行してください。
無視可能な項目でアラートが発行された場合:アラートの詳細の確認 をクリックし、ダイアログボックスで 無視 をクリックして OK をクリックした後、再チェック をクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
無視できない項目でアラートが発行された場合、問題を解決してから先に進んでください。
ステップ 5:インスタンスの購入
成功率 が 100% に達したら、次へ:インスタンスの購入 をクリックします。
購入 ページで、以下のパラメーターを設定します。
セクション パラメーター 説明 新規インスタンスクラス 課金方法 サブスクリプション:固定期間の前払い方式で、長期利用にコスト効率が良いです。従量課金:時間単位での課金方式で、短期利用に適しています。不要になった時点でインスタンスをリリースすることで、課金を停止できます。 リソースグループ設定 同期インスタンスのリソースグループです。デフォルト: デフォルトリソースグループResource Management とは インスタンスクラス 同期スループットクラス。データ量とレイテンシー要件に基づいて選択します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 サブスクリプション期間 サブスクリプション期間(1~9 か月、または 1、2、3、5 年)。サブスクリプション 課金方法でのみ利用可能です。 Data Transmission Service (Pay-as-you-go) Service Terms をお読みになり、同意してください。
購入して開始 をクリックし、確認ダイアログで OK をクリックします。
タスクが開始された後は、タスクリストから進行状況を監視できます。