Data Transmission Service (DTS) を使用して、Elastic Compute Service (ECS) インスタンス上で稼働する自己管理 MySQL データベースから PolarDB for MySQL クラスターへ、既存データおよび継続的な変更を含むデータを継続的に同期します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
PolarDB for MySQL クラスター。作成方法については、「従量課金クラスターの購入」をご参照ください。
必要な権限を持つ自己管理 MySQL データベースのデータベースアカウント。詳細については、「自己管理 MySQL データベースのアカウント作成とバイナリロギングの設定」をご参照ください。
ソースデータベースアカウントの権限
同期対象オブジェクトに対して、データベースアカウントは以下の権限を有している必要があります。
同期対象のオブジェクトを選択
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
ターゲットクラスターのアカウント権限
PolarDB for MySQL クラスター上のデータベースアカウントは、同期対象となるすべてのオブジェクトに対して読み取りおよび書き込み権限を有している必要があります。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期およびフルデータ同期 | 無料 |
| インクリメンタルデータ同期 | 有料です。「課金概要」をご参照ください。 |
サポートされる SQL 操作
| タイプ | 操作 |
|---|---|
| DML | INSERT、UPDATE、DELETE、REPLACE |
| DDL | ALTER TABLE、ALTER VIEW、CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW、DROP INDEX、DROP TABLE、RENAME TABLE、TRUNCATE TABLE |
RENAME TABLE 操作により、データの不整合が発生する場合があります。特定のテーブルを同期対象として選択した状態で同期中にそのテーブル名を変更すると、当該テーブルに対する変更のレプリケーションがターゲットクラスターに反映されなくなります。これを防ぐには、個別のテーブルではなく親データベースを同期対象として選択し、名前変更前後ともにそのデータベースが同期対象に含まれていることを確認してください。
サポートされる同期トポロジ
単方向 1 対 1 同期
単方向 1 対多 同期
単方向カスケード同期
単方向多対 1 同期
詳細については、「同期トポロジ」をご参照ください。
制限事項
トリガーの非互換性
同期対象としてデータベースを選択し、そのデータベースにテーブルを更新するトリガーが含まれている場合、データの不整合が発生する可能性があります。回避策については、「トリガーを含むソースデータベース向けデータ同期タスクの設定」をご参照ください。
プライマリキーの必須要件
ソーステーブルには PRIMARY KEY または一意制約 (UNIQUE constraint) が必要であり、すべてのフィールド値が一意である必要があります。この条件を満たさない場合、ターゲットクラスターに重複レコードが生成される可能性があります。
注意事項
初期完全同期中、DTS はソースから読み取り、ターゲットへ書き込みを行うため、両インスタンスの負荷が高まります。CPU 利用率が両インスタンスとも 30 % 未満であるオフピーク時間帯に同期タスクを実行してください。
同期中は、gh-ost や pt-online-schema-change を使用した DDL 操作を行わないでください。これらのツールを使用すると、タスクが失敗する可能性があります。
初期完全同期中の並列 INSERT 操作により、ターゲットクラスターでテーブルの断片化が発生します。同期完了後、ターゲットの表領域はソースよりも大きくなります。
DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、セキュリティリスクが発生します。公開インターネット経由でのアクセスに代わり、Express Connect、VPN Gateway、Smart Access Gateway (SAG) などの非公開接続オプションを検討するほか、公開ポートの制限やホワイトリストエントリの定期監査など、予防措置を講じてください。
同期タスクの設定
ステップ 1:DTS インスタンスの購入
DTS インスタンスの購入を行います。購入ページで、以下の設定を行ってください。
ソースインスタンス:MySQL
ターゲットインスタンス:PolarDB
同期トポロジ:単方向同期
ステップ 2:ソースおよびターゲットデータベースの設定
DTS コンソールにログインします。
Data Management (DMS) コンソールにリダイレクトされた場合は、
アイコンを
内でクリックして、以前のバージョンの DTS コンソールに戻ります。左側のナビゲーションウィンドウで、データ同期 をクリックします。
同期タスク ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。
同期インスタンスを検索し、タスクの設定 を 操作 列からクリックします。
以下のパラメーターを使用して、ソースおよびターゲットデータベースを設定します。
ソースデータベース
パラメーター 説明 タスク名 タスクを識別するための説明的な名前。一意である必要はありません。 インスタンスタイプ ECS インスタンス上のユーザー作成データベース を選択します。 インスタンスリージョン 購入ページで選択したソースリージョン。読み取り専用です。 ECS インスタンス ID 自己管理 MySQL データベースをホストする ECS インスタンスの ID。 データベースタイプ MySQL に設定します。読み取り専用です。 ポート番号 自己管理 MySQL データベースのポート番号。 データベースアカウント 「前提条件」で記載された必要な権限を持つアカウント。 データベースパスワード データベースアカウントのパスワード。 ターゲットデータベース
パラメーター 説明 インスタンスタイプ PolarDB インスタンス に設定します。読み取り専用です。 インスタンスリージョン 購入ページで選択したターゲットリージョン。読み取り専用です。 PolarDB インスタンス ID ターゲット PolarDB for MySQL クラスターの ID。 データベースアカウント 同期対象オブジェクトに対して読み取りおよび書き込み権限を持つアカウント。 データベースパスワード データベースアカウントのパスワード。
ステップ 3:ホワイトリストの設定
右下隅の ホワイトリストの設定と次へ をクリックします。
ソースまたはターゲットデータベースが ApsaraDB RDS for MySQL や ApsaraDB for MongoDB などの Alibaba Cloud データベースインスタンスである場合、DTS は自動的に DTS サーバーの CIDR ブロックをインスタンスの IP アドレスホワイトリストに追加します。
ソースまたはターゲットデータベースが ECS インスタンス上で稼働する自己管理データベースである場合、DTS は自動的に DTS サーバーの CIDR ブロックを ECS インスタンスのセキュリティグループルールに追加します。データベースが複数の ECS インスタンスにまたがってホストされている場合は、各インスタンスのセキュリティグループルールに DTS の CIDR ブロックを手動で追加してください。
ソースまたはターゲットデータベースがデータセンター内またはサードパーティのクラウドサービスプロバイダー (CSP) によって提供される自己管理データベースである場合、DTS サーバーの CIDR ブロックをデータベースの IP アドレスホワイトリストに手動で追加する必要があります。
詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
ステップ 4:同期対象の選択と競合処理の設定
以下の設定を行い、次へ をクリックします。
| 設定 | 説明 |
|---|---|
| 既存のターゲットテーブルの処理モード | 事前チェックおよび中断(デフォルト):DTS は、ターゲットクラスターにソースと同じ名前のテーブルが存在するかをチェックします。競合が検出された場合、事前チェックは失敗します。ターゲットテーブルを削除せずに名前競合を解決するには、「オブジェクト名マッピング」機能をご利用ください。無視:名前競合のチェックをスキップします。初期同期では、DTS は既にターゲットに存在するプライマリキーを持つレコードをスキップします。増分同期では、DTS はそれらのレコードを書き込みます。ソースとターゲットのスキーマが異なる場合、タスクが失敗したり、部分的なデータのみが同期されたりする可能性があります。 |
| 同期対象 | 利用可能 セクションからテーブルまたはデータベースを選択し、 |
| データベースおよびテーブルの名前変更 | 「オブジェクト名マッピング」を使用して、ターゲットクラスター内のオブジェクト名を変更します。 |
| ソーステーブル DMS_ ONLINE_ DDL 実行時に一時テーブルをターゲットデータベースにコピーしますか | Data Management (DMS) を使用してソースデータベースでオンライン DDL 操作を実行する場合、これらの操作によって生成された一時テーブルを同期するかどうかを選択します。<br><br>はい: 一時テーブルのデータを同期します。大規模なオンライン DDL 操作により、同期遅延が増加する可能性があります。<br><br>いいえ: 一時テーブルをスキップし、元の DDL のみを同期します。宛先テーブルが一時的にロックされる場合があります。 |
| 接続失敗時の再試行時間 | デフォルトは 720 分(12 時間)です。この期間内に DTS が再接続した場合、タスクは自動的に再開されます。再試行期間内に再接続されなかった場合、タスクは失敗します。再試行中も DTS の課金が発生します。 |
無視 を選択しても、データ整合性は保証されません。初期同期では、DTS はターゲットに既に存在するプライマリキーを持つレコードをスキップします。増分同期では、DTS はそれらのレコードを書き込みます。ソースとターゲットのスキーマが異なる場合、タスクが失敗したり、不完全なデータが生成されたりする可能性があります。
ステップ 5:初期同期タイプの選択
含める同期タイプを選択します。

初期スキーマ同期 と 初期完全同期 の両方を選択すると、DTS は増分同期に切り替える前に、既存のスキーマおよびデータをレプリケートします。
ステップ 6:事前チェックの実行と同期の開始
右下隅の 事前チェック をクリックします。
事前チェックが失敗した場合、各失敗項目の横にある
アイコンをクリックして詳細を表示し、問題を修正して再度事前チェックを実行してください。問題を修正しない場合は、失敗項目を無視して新しい事前チェックを開始できます。事前チェック成功 のメッセージが表示されたら、事前チェック ダイアログボックスを閉じます。同期タスクは自動的に開始されます。
同期タスク ページでタスクのステータスを監視します。初期同期が完了し、タスクのステータスが 同期中 になるまで待ちます。

次のステップ
同期中にオブジェクト名を変更する方法については、「同期対象オブジェクトの名前変更」をご参照ください。
サポートされているすべての同期トポロジについて詳しくは、「同期トポロジ」をご参照ください。