Data Transmission Service (DTS) を使用して、2 つの PolarDB-X 2.0 インスタンス間で一方向同期を設定します。DTS は、ソースインスタンスから宛先インスタンスへスキーマ構造、既存データ、および継続的な変更をレプリケーションし、最小限の同期遅延で両インスタンスを同期状態に保ちます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソースおよび宛先の PolarDB-X 2.0 インスタンスを作成済みであること
宛先インスタンスの利用可能なストレージ容量が、ソースインスタンス内の全データサイズより大きいこと
PolarDB-X 2.0 コンソールでバイナリロギングが有効化されており (パラメーター設定をご参照ください)、
binlog_row_imageがFULLに設定されていること
制限事項
ソースデータベース
| 制限事項 | 詳細 |
|---|---|
| 主キーまたは一意キーが必要 | 同期対象のテーブルには、PRIMARY KEY またはすべてのフィールドが一意である一意制約 (UNIQUE constraint) が必要です。該当しない場合、宛先データベースに重複レコードが発生する可能性があります。 |
| 1 タスクあたり最大 5,000 テーブル | テーブルを同期対象として選択し、宛先でテーブル名またはカラム名を変更する必要がある場合、1 タスクでサポートされるテーブル数は最大 5,000 です。この上限を超えるとリクエストエラーが発生します。テーブルを複数のタスクに分割するか、データベース全体を 1 タスクで同期してください。 |
| バイナリログの保持期間 | 増分同期のみの場合:バイナリログを最低 24 時間保持してください。完全同期+増分同期の場合:バイナリログを最低 7 日間保持してください。完全同期完了後は、保持期間を 24 時間以上に設定してください。DTS がバイナリログを取得できない場合、タスクは失敗し、データ損失が発生する可能性があります。 |
| 大文字を含むテーブル名 | テーブル名に大文字が含まれる場合、そのテーブルではスキーマ同期のみがサポートされます。 |
| MySQL 5.7 との互換性 | ソースの PolarDB-X 2.0 インスタンスは、MySQL 5.7 と互換性がある必要があります。 |
| TABLEGROUP および Locality は非サポート | 同期タスクでは TABLEGROUP および Locality 属性を持つデータベースやスキーマはサポートされません。 |
| スキーマ同期および完全同期中の DDL 実行不可 | スキーマ同期または完全データ同期中に、ソースデータベースで DDL 文を実行しないでください。実行するとタスクが失敗します。 |
その他の制限事項
| 制限事項 | 詳細 |
|---|---|
| スキーマ同期は非サポート | このシナリオでは、DTS によるスキーマ同期は実行されません。タスク開始前に、宛先インスタンスでターゲットデータベースおよびテーブルを作成してください。 |
| MySQL 5.7 との互換性 | 宛先の PolarDB-X 2.0 インスタンスは、MySQL 5.7 と互換性がある必要があります。 |
| 非ピーク時間帯の同期を推奨 | 初期の完全データ同期では、ソースからの読み取りと宛先への書き込みが同時に行われるため、両方のデータベースサーバーの負荷が増加します。非ピーク時間帯に同期を実行してください。 |
| 完全同期後のテーブル断片化 | 完全データ同期中の同時 INSERT 操作により、宛先のテーブルが断片化します。完全同期完了後、宛先の表領域使用量はソースよりも大きくなります。 |
| pt-online-schema-change の使用を避ける | 同期対象オブジェクトに対する DDL 操作で pt-online-schema-change を使用しないでください。これにより同期タスクが失敗する可能性があります。 |
| 宛先への書き込みは DTS 経由のみ | DTS 以外のツールを使用して宛先データベースに書き込むと、データの不整合が発生する可能性があります。オンライン DDL 操作を Data Management Service (DMS) で実行する場合も、宛先でのデータ損失が発生する可能性があります。 |
| タスク失敗時の復旧 | DTS タスクが失敗した場合、DTS サポートは 8 時間以内にそのタスクを復旧しようと試みます。復旧中、タスクが再起動される場合があり、タスクパラメーター(データベースパラメーターを除く)が変更される場合があります。変更される可能性のあるパラメーターの一覧については、「[インスタンスパラメーターの変更]」セクション(「DTS インスタンスのパラメーターを変更する」トピック内)をご参照ください。 |
DTS は、バイナリログ位置を進めるために、ソースデータベースのdts_health_check.ha_health_checkテーブルを定期的に更新します。
スキーマ同期中、DTS はソースから外部キーを宛先へコピーします。完全および増分データ同期中、DTS はセッションレベルで外部キー制約チェックおよびカスケード操作を一時的に無効化します。同期中にソースでカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 課金済み。詳細については、「課金概要」をご参照ください。 |
同期可能な SQL 操作
| 操作タイプ | ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | ALTER TABLE;CREATE FUNCTION、CREATE INDEX、CREATE TABLE;DROP INDEX、DROP TABLE;RENAME TABLE;TRUNCATE TABLE |
RENAME TABLE 操作はデータの不整合を引き起こす可能性があります。テーブルを同期対象として選択し、同期中にそのテーブル名を変更した場合、そのテーブルに対する変更のレプリケーションが停止します。これを回避するには、テーブルではなくデータベースを同期対象として選択し、名前変更前および名前変更後のデータベースがいずれも選択対象に含まれていることを確認してください。
必要な権限
| データベース | スキーマ同期 | 完全データ同期 | 増分データ同期 |
|---|---|---|---|
| ソース PolarDB-X 2.0 | SELECT | SELECT | SELECT(同期対象オブジェクトに対して)、REPLICATION SLAVE、REPLICATION CLIENT |
| 宛先 PolarDB-X 2.0 | 読み取りおよび書き込み | — | — |
各権限の用途:
| 権限 | 用途 | 使用タイミング |
|---|---|---|
| SELECT | 同期対象テーブルから行を読み取ります。 | スキーマ同期、完全データ同期、増分データ同期 |
| REPLICATION SLAVE | ソースインスタンスに接続し、バイナリログストリームを読み取ります。 | 増分データ同期 |
| REPLICATION CLIENT | SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS を実行してレプリケーション状態を監視します。 | 増分データ同期(全期間) |
これらの権限を付与する手順については、「PolarDB-X のデータ同期ツール」をご参照ください。
同期タスクの設定
ステップ 1:データ同期タスクページへ移動
Data Management (DMS) コンソール にログインします。
上部ナビゲーションバーで、[データ + AI] をクリックします。
左側ナビゲーションウィンドウで、[DTS (DTS)] > [データ同期] を選択します。
DMSコンソールのレイアウトは、お客様の構成に基づいて異なる場合があります。詳細については、「シンプルモード」および「DMSコンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。新しいDTSコンソールのデータ同期タスクページに直接アクセスすることもできます。
ステップ 2:リージョンの選択
[データ同期タスク] の右側で、データ同期インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、上部ナビゲーションバーからリージョンを選択します。
ステップ 3:ソースおよび宛先データベースの設定
[タスクの作成] をクリックし、データベース接続情報を入力します。
ソースおよび宛先データベースの設定後、次に進む前に画面上に表示される [制限事項] を必ずご確認ください。この確認を省略すると、タスクが失敗したり、データの不整合が発生したりする可能性があります。
タスク情報
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの説明的な名称です。DTS がデフォルト名を自動生成します。名称は一意である必要はありません。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| [DMS データベースインスタンスの選択] | 既存の DMS データベースインスタンスを選択するか、手動で接続を構成する場合は空白のままにしてください。既存のインスタンスを選択した場合、DTS が残りのパラメーターを自動的に入力します。 |
| データベースタイプ | [PolarDB-X 2.0] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ソースの PolarDB-X 2.0 インスタンスが配置されているリージョンです。 |
| Alibaba Cloudアカウント間のデータ複製 | 単一アカウント内での同期の場合は、[いいえ] を選択します。 |
| [インスタンス ID] | ソースの PolarDB-X 2.0 インスタンスの ID です。 |
| データベースアカウント | ソースインスタンスのデータベースアカウントです。このアカウントには SELECT、REPLICATION CLIENT、REPLICATION SLAVE 権限が必要です。 |
| データベースパスワード | ソースデータベースアカウントのパスワードです。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| [DMS データベースインスタンスの選択] | 既存の DMS データベースインスタンスを選択するか、手動で接続を構成する場合は空白のままにしてください。 |
| データベースタイプ | [PolarDB-X 2.0] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | 宛先の PolarDB-X 2.0 インスタンスが配置されているリージョンです。 |
| [インスタンス ID] | 宛先の PolarDB-X 2.0 インスタンスの ID です。 |
| データベースアカウント | 宛先インスタンスのデータベースアカウントです。このアカウントには読み取りおよび書き込み権限が必要です。 |
| データベースパスワード | 宛先データベースアカウントのパスワードです。 |
ステップ 4:接続性のテスト
[接続性のテストと続行] をクリックします。
DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンス(例:ApsaraDB RDS for MySQL や ApsaraDB for MongoDB)のホワイトリストおよび ECS でホストされるデータベースのセキュリティグループルールに追加します。データセンター内またはサードパーティプロバイダーがホストする自己管理データベースの場合は、手動で DTS サーバーの CIDR ブロックをデータベースのホワイトリストに追加してください。CIDR ブロック一覧については、「DTS サーバーの CIDR ブロック」セクションをご参照ください。
DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、潜在的なセキュリティリスクが発生する可能性があります。続行する前に、強力な認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストエントリの定期的な監査、不正な CIDR ブロックの削除などの予防措置を講じてください。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway を使用して、データベースと DTS を接続することもできます。
ステップ 5:同期対象の設定
| パラメーター | 説明 |
|---|---|
| 同期タイプ | [スキーマ同期]、[全データ同期]、および[増分データ同期] を選択します。DTS はまずスキーマと既存データを同期し、その後、継続的な増分レプリケーションに切り替えます。 |
| [競合テーブルの処理モード] | [事前チェックとエラー報告]オブジェクト名マッピング(デフォルト):宛先にソースと同じ名前のテーブルが存在する場合、事前チェックが失敗します。タスク開始前に競合を解消してください。テーブルを削除できない場合は、「」を使用して宛先テーブルの名前を変更してください。[エラーを無視して続行]:テーブル名の競合チェックをスキップします。完全同期中、主キーまたは一意キーの値が一致する既存の宛先レコードは保持されます。増分同期中、それらは上書きされます。スキーマの不一致により、一部のカラムのみが同期されたり、タスクが失敗したりする可能性があるため、注意して使用してください。 |
| 同期トポロジー | [一方向同期] を選択します。 |
| ソース オブジェクト | 同期対象のオブジェクト(カラム、テーブル、またはデータベース)を選択し、[選択されたオブジェクト] セクションに移動します。テーブルまたはカラムを選択した場合、DTS はビュー、トリガー、ストアドプロシージャを同期しません。 |
| [選択されたオブジェクト] | 単一のオブジェクトの名前を変更するには、そのオブジェクトを右クリックし、「単一のオブジェクトの名前をマッピング」の手順に従います。複数のオブジェクトを一度に名前変更するには、右上隅の[一括編集]をクリックします。SQL 条件でデータをフィルターするには、オブジェクトを右クリックして WHERE 句を指定します。詳細については、「フィルター条件の指定」をご参照ください。 |
ステップ 6:高度な設定の構成
[次へ:高度な設定] をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| [タスクスケジューリング用の専用クラスター] | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性が必要な場合は、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| [接続失敗時のリトライ時間] | 接続失敗後に DTS がリトライする時間です。有効範囲:10~1440 分。デフォルト:720 分。最低でも 30 分に設定してください。この時間内に DTS が再接続できた場合、タスクは再開します。それ以外の場合はタスクが失敗します。同じソースまたは宛先データベースを複数のタスクが共有し、それぞれ異なるリトライ時間を設定している場合、最も短いリトライ時間が適用されます。リトライ中も DTS インスタンスの課金は発生します。 |
| [その他の問題発生時のリトライ時間] | DDL または DML 操作の失敗後に DTS がリトライする時間です。有効範囲:1~1440 分。デフォルト:10 分。最低でも 10 分に設定してください。この値は、[接続失敗時のリトライ時間] の値より小さくする必要があります。 |
| [完全データ移行におけるスロットリングの有効化] | 完全データ同期中の宛先への負荷を軽減するため、[ソースデータベースへのクエリ数 (QPS)]、[完全データ移行の RPS]、[完全移行のデータ移行速度 (MB/s)] を構成します。[完全データ同期] が選択されている場合にのみ利用可能です。 |
| [増分データ同期におけるスロットリングの有効化] | 増分同期中の宛先への負荷を軽減するため、[増分データ同期の RPS] および [増分同期のデータ同期速度 (MB/s)] を構成します。 |
| 環境タグ | インスタンスの環境を識別するための任意のタグです。 |
| [転送および逆再生タスクのハートビートテーブルに対する SQL 操作の削除] | DTS がソースデータベースにハートビート SQL 操作を書き込むかどうかを制御します。[はい]:ハートビート SQL は書き込まれず、DTS インスタンスに対して遅延値が表示される場合があります。[いいえ]:ハートビート SQL が書き込まれますが、ソースデータベースの物理バックアップおよびクローン機能に影響を与える可能性があります。 |
| [ETL の構成] | ETL (抽出・変換・書き出し) 機能を有効にします。はい: コードエディタでデータ処理文を入力します。詳細については、「データ移行またはデータ同期タスクでETLを設定する」をご参照ください。いいえ: ETLは無効になります。 |
| [モニタリングとアラート] | タスクの失敗または同期遅延がしきい値を超える場合にアラートを設定します。はい:アラートのしきい値と通知の連絡先を指定します。「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。いいえ:アラート機能は無効になります。 |
ステップ 7:事前チェックの実行
[次へ:タスク設定の保存と事前チェック] をクリックします。
このタスクの構成に使用される API パラメーターをプレビューするには、[次へ:タスク設定の保存と事前チェック] にマウスカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスク開始前に事前チェックを実行します。いずれかの項目が失敗した場合:
失敗した項目の横にある [詳細の表示] をクリックし、問題を解決してから [再チェック] をクリックします。
無視できない警告項目がある場合、失敗した項目の横にある [詳細の表示] をクリックし、問題をトラブルシューティングしてから [再チェック] をクリックします。
無視可能な警告項目がある場合、失敗した項目の横にある [警告の詳細の確認] をクリックし、ダイアログボックスで [無視] をクリックして [OK] をクリックし、その後 [再チェック] をクリックします。警告項目を無視すると、データの不整合が発生する可能性があります。
ステップ 8:インスタンスの購入
成功率が100%に達するまで待ってから、[次へ: インスタンスの購入]をクリックします。
購入ページで、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:固定期間分を前払いします。長期利用の場合、コスト効率に優れています。従量課金:1 時間単位で請求されます。短期利用に適しています。インスタンスが不要になった場合は、課金を停止するためにインスタンスをリリースしてください。 |
| リソースグループ設定項目 | データ同期インスタンスのリソースグループです。デフォルト:default resource group。詳細については、「What is Resource Management? |
| インスタンスクラス | 同期スループットの階層です。詳細については、「Instance classes of data synchronization instances」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション を選択した場合に利用可能です。選択肢:1~9 か月、または 1 年、2 年、3 年、5 年。 |
ステップ 9:タスクの開始
[Data Transmission Service(従量課金)サービス利用規約] を読み、同意した上で [購入して開始] をクリックします。確認ダイアログボックスで [OK] をクリックします。
タスクがタスクリストに表示されます。DTS はまずスキーマ同期および完全データ同期を実行し、その後、自動的に増分データ同期に切り替えます。