Data Transmission Service (DTS) を使用して、PolarDB for MySQL から ApsaraDB RDS for MySQL にデータをリアルタイムで同期します。
前提条件
- PolarDB for MySQL クラスターが作成されていること。 PolarDB for MySQL クラスターの作成。
- PolarDB for MySQL のバイナリロギングが有効になっていること。 バイナリロギングの有効化。
注意事項
-
初期完全同期中、DTS はソースデータベースとターゲットデータベースの読み取り/書き込みリソースを消費するため、データベースの負荷が増加します。データベースパフォーマンスが低い、インスタンスの仕様が低い、またはビジネストラフィックが重い (たとえば、ソースデータベースに低速な SQL クエリやプライマリキーのないテーブルが多数存在する、またはターゲットデータベースでデッドロックが発生するなど) 場合、データベースの負荷が増加し、サービスが利用できなくなる可能性さえあります。データを同期する前に、ソースインスタンスとターゲットインスタンスのパフォーマンスを評価してください。両方のインスタンスの CPU 使用率が 30% 未満であるなど、オフピーク時にデータ同期を実行することを推奨します。
- 初期完全同期の際に、同時 INSERT 操作によってターゲットクラスターでテーブルの断片化が発生し、その結果、ソースデータベースよりも表領域が大きくなります。
- ソーステーブルにプライマリキーまたは一意制約がなく、重複した行が含まれている場合、ターゲットデータベースに重複したデータが存在する可能性があります。
- ターゲットが ApsaraDB RDS for MySQL インスタンス (MySQL 5.7 および 8.0 を除く) の場合、DTS はターゲットデータベースにアカウント [dtssyncwriter] を作成します。このアカウントは書き込み権限があり、DTS によってのみ使用されます。
課金
同期タイプ | 料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料です。詳細については、「課金概要」をご参照ください。 |
サポートされる SQL 操作
|
操作タイプ |
SQL ステートメント |
|
DML |
INSERT、UPDATE、DELETE、REPLACE |
|
DDL |
|
サポートされる同期トポロジ
-
一方向 1 対 1 同期
-
一方向 1 対多同期
-
一方向カスケード同期
-
一方向多対 1 同期
各トポロジには特定の注意事項があります。詳細については、「同期トポロジ」をご参照ください。
制限事項
-
トリガーとの非互換性
データベース全体を同期し、そのデータベース内のトリガーが同じデータベース内の別のテーブルを更新する場合、ソースデータベースとターゲットデータベース間でデータの不整合が発生する可能性があります。ソリューションについては、「トリガーを含むソースデータベースのデータ同期または移行タスクの設定」をご参照ください。
-
RENAME TABLE の制限事項
RENAME TABLE操作は、データの不整合を引き起こす可能性があります。たとえば、同期対象としてテーブル A のみを選択し、ソースインスタンスでその名前がテーブル B に変更された場合、テーブル B はターゲットインスタンスに同期されません。この問題を回避するには、データ同期タスクを設定する際に、テーブル A とテーブル B の両方を含むデータベース全体を同期オブジェクトとして選択してください。
操作手順
- データ同期インスタンスを購入します。 購入プロセス。
説明 インスタンスを購入する際、PolarDB を PolarDB に、MySQL を MySQL に、一方向同期 を 一方向同期 に設定します。
-
DTS コンソールにログインします。
説明Data Management (DMS) コンソールに自動的にリダイレクトされた場合は、右下隅の
アイコンをクリックし、次に
をクリックして以前のバージョンの DTS コンソールに戻ることができます。 -
左側のナビゲーションウィンドウで、データ同期 をクリックします。
-
[同期タスク] ページの上部で、ターゲットインスタンスが配置されているリージョンを選択します。
-
購入したデータ同期タスクを見つけ、[タスクの設定] をクリックします。
- ソースインスタンスとターゲットインスタンスを設定します。
カテゴリ パラメーター 説明 N/A 同期タスク名 DTS は自動的にタスク名を生成します。識別しやすいように、分かりやすい名前を指定してください。 ソースインスタンス情報 インスタンスタイプ [PolarDB インスタンス] に固定。編集不可。 インスタンスリージョン 購入時に選択したソースリージョンです。編集はできません。 PolarDB インスタンス ID ソースの PolarDB for MySQL クラスター ID を選択します。 データベースアカウント ソースの PolarDB for MySQL クラスターのデータベースアカウントを入力します。 データベースパスワード データベースアカウントのパスワードを入力します。 ターゲットインスタンス情報 インスタンスタイプ RDS インスタンス を選択します。 インスタンスリージョン 購入時に選択したターゲットリージョンです。編集はできません。 データベースアカウント ターゲット RDS インスタンスのデータベースアカウントを入力します。 データベースパスワード データベースアカウントのパスワードを入力します。 説明 ターゲット RDS インスタンスが MySQL 5.5 または MySQL 5.6 を実行している場合、データベースアカウント と データベースのパスワード を設定する必要はありません。接続方法 必要に応じて 非暗号化 または SSL 暗号化 を選択します。SSL 暗号化 を選択する場合は、まず RDS インスタンスの SSL 暗号化を有効にしてください。 SSL 暗号化の設定。 重要現在、暗号化 パラメーターは中国本土および中国 (香港) リージョンでのみ利用可能です。
-
ページ右下隅の [ホワイトリストを設定して次へ] をクリックします。
ソースまたはターゲットデータベースが ApsaraDB RDS for MySQL や ApsaraDB for MongoDB インスタンスなどの Alibaba Cloud データベースインスタンスである場合、DTS は DTS サーバーの CIDR ブロックをインスタンスの IP アドレスホワイトリストに自動的に追加します。ソースまたはターゲットデータベースが Elastic Compute Service (ECS) インスタンスでホストされている自己管理データベースである場合、DTS は DTS サーバーの CIDR ブロックを ECS インスタンスのセキュリティグループルールに自動的に追加します。この場合、ECS インスタンスがデータベースにアクセスできることを確認する必要があります。自己管理データベースが複数の ECS インスタンスでホストされている場合は、各 ECS インスタンスのセキュリティグループルールに DTS サーバーの CIDR ブロックを手動で追加する必要があります。ソースまたはターゲットデータベースがデータセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供されている自己管理データベースである場合は、DTS がデータベースにアクセスできるように、データベースの IP アドレスホワイトリストに DTS サーバーの CIDR ブロックを手動で追加する必要があります。詳細については、「DTS サーバーの IP アドレスのホワイトリスト登録」をご参照ください。
警告DTS サーバーのパブリック IP アドレスの CIDR ブロックを自動または手動で追加すると、セキュリティリスクが生じる可能性があります。本製品を使用することにより、お客様はこれらの潜在的なリスクを認識し、受け入れるものとします。お客様は基本的なセキュリティ保護を実装する必要があります。これらの保護には、パスワードセキュリティの強化、CIDR ブロックのオープンポートの制限、内部 API 通信での認証の使用、不要な CIDR ブロックの定期的な確認と制限などが含まれますが、これらに限定されません。あるいは、専用回線、VPN Gateway、または Smart Access Gateway などの内部ネットワークを介してデータベースに接続することもできます。
-
既存のターゲットテーブルの処理モードを設定し、同期するオブジェクトを選択します。
パラメーター
説明
既存のターゲットテーブルの処理モード
-
エラーの事前チェックと報告:DTS は、ターゲットデータベースにソーステーブルと同じ名前のテーブルがあるかどうかをチェックします。競合が見つからない場合、事前チェックは成功します。名前の競合が存在する場合、事前チェックは失敗し、タスクは停止します。
説明ターゲットデータベース内の競合するテーブルを削除または名前変更できない場合は、「ターゲットインスタンスでのオブジェクト名の設定」を参照して名前の競合を回避できます。
-
エラーを無視して続行:ターゲットデータベース内の競合する名前のテーブルのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合やその他のリスクが発生する可能性があります。例:
-
テーブルスキーマが同一の場合、ターゲットテーブル内の既存のレコードでソースレコードとプライマリキーを共有するものは、初期同期中には変更されません。ただし、増分同期中にソースからの変更によって上書きされます。
-
テーブルスキーマが異なる場合、初期同期で一部の列が転送されなかったり、完全に失敗したりする可能性があります。
-
同期オブジェクトの選択
ソースオブジェクト ボックスで、同期したいオブジェクトをクリックし、
アイコンをクリックして 選択中のオブジェクト ボックスに移動します。同期オブジェクトとしてデータベースとテーブルを選択できます。
説明-
データベース全体を選択した場合、そのデータベース内のオブジェクトに対するすべてのスキーマ変更がターゲットデータベースに同期されます。
-
デフォルトでは、オブジェクト名は変更されません。ターゲットクラスターでオブジェクトの名前を変更するには、オブジェクト名マッピング機能を使用します。詳細については、「ターゲットインスタンスでのオブジェクト名の設定」をご参照ください。
オブジェクトのマッピングまたは名前変更
ターゲットインスタンスで同期されるオブジェクトの名前を変更します。詳細については、「データベース、テーブル、および列のマッピング」をご参照ください。
DMS オンライン DDL 操作からの一時テーブルのレプリケート
Data Management (DMS) を使用してソースデータベースでオンライン DDL 変更を実行する場合、DDL 変更によって生成された一時テーブルを同期するかどうかを選択できます。
-
○:オンライン DDL 変更によって生成された一時テーブルを同期します。
説明オンライン DDL 変更によって大量の一時テーブルデータが生成されると、データ同期タスクが遅延する可能性があります。
-
いいえ:オンライン DDL 変更によって生成された一時テーブルを同期しません。ソースデータベースからの元の DDL 操作のみが同期されます。
説明このオプションを選択すると、ターゲットデータベースのテーブルがロックされます。
接続リトライ期間
DTS がソースまたはターゲットインスタンスに接続できない場合、デフォルトで 720 分 (12 時間) リトライします。カスタムのリトライ期間を指定することもできます。指定された期間内に DTS がソースまたはターゲットインスタンスに再接続した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
説明接続リトライ中のタスク実行時間も課金対象となります。ビジネスニーズに応じてリトライ期間をカスタマイズするか、ソースインスタンスとターゲットインスタンスがリリースされたらすぐに DTS インスタンスをリリースしてください。
-
-
上記の設定を完了した後、ページ右下隅の 次へ をクリックします。
-
初期同期の詳細設定を行います。
説明初期同期タイプには、初期スキーマ同期と初期完全データ同期があります。[初期スキーマ同期] と [初期完全データ同期] の両方を選択した場合、DTS は増分データ同期を開始する前に、選択したオブジェクトのスキーマと既存のデータをソースデータベースからターゲットデータベースに同期します。
-
上記の設定を完了した後、ページ右下隅の [事前チェックして開始] をクリックします。
説明-
同期タスクが開始される前に事前チェックが実行され、事前チェックに合格した後にのみタスクを開始できます。
-
事前チェックが失敗した場合は、失敗した項目の横にある
アイコンをクリックして詳細を表示します。-
原因に基づいて問題を修正し、再度事前チェックを実行できます。
-
警告をトリガーした項目を修正する必要がない場合は、無視 または [警告を無視して事前チェックを再実行] をクリックして警告をスキップし、再度事前チェックを実行できます。
-
-
-
事前チェック ダイアログボックスに 事前チェック完了 と表示されたら、事前チェック ダイアログボックスを閉じます。同期タスクは自動的に開始されます。
-
タスクが初期化を完了し、同期中 状態になるまで待ちます。
データ同期 ページでデータ同期タスクのステータスを確認できます。