Data Transmission Service (DTS) を使用すると、ApsaraDB RDS for PostgreSQL インスタンスから AnalyticDB for PostgreSQL インスタンスにデータを同期できます。この機能を使用して、一元的な分析のためにデータを簡単に転送できます。
前提条件
-
同期したい ApsaraDB RDS for PostgreSQL インスタンスのテーブルには、プライマリキーが必要です。
-
宛先の AnalyticDB for PostgreSQL インスタンスを作成します。手順については、「AnalyticDB for PostgreSQL インスタンスの作成」をご参照ください。
注意事項
-
複数のデータベースからデータを同期するには、データベースごとに個別のデータ同期タスクを作成する必要があります。
-
データ同期中にソースデータベースに新しいテーブルを作成し、それを同期したい場合は、データ整合性を維持するためにテーブルで次のコマンドを実行します。
ALTER TABLE schema.table REPLICA IDENTITY FULL; -
タスクが期待どおりに実行されるように、プライマリ/セカンダリ スイッチオーバーは ApsaraDB RDS for PostgreSQL 11 インスタンスでのみサポートされます。また、
rds_failover_slot_modeパラメーターをsyncに設定する必要もあります。詳細については、「論理レプリケーションスロットのフェイルオーバー」をご参照ください。警告自主管理 PostgreSQL データベースまたは異なるバージョンの ApsaraDB RDS for PostgreSQL インスタンスでプライマリ/セカンダリ スイッチオーバーを実行すると、データ同期タスクは失敗します。
-
ソースデータベースに長時間トランザクションが存在し、タスクに増分同期が含まれている場合、これらのトランザクションがコミットされる前に生成された先行書き込みログ (WAL) レコードが蓄積される可能性があります。これにより、ソースデータベースのディスク領域が満杯になることがあります。
課金
|
同期タイプ |
料金 |
|
スキーマ同期と完全データ同期 |
無料です。 |
|
増分同期 |
有料です。詳細については、「課金概要」をご参照ください。 |
制限事項
-
スキーマ同期はサポートされていません。DTS は、テーブルスキーマなどのオブジェクトの定義をソースデータベースからターゲットデータベースに同期しません。
-
データテーブルのみを同期できます。追記最適化 (AO) テーブルは、宛先テーブルとしてサポートされていません。
-
次のタイプのデータは同期できません:BIT、VARBIT、GEOMETRY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT。
-
ソースデータベースの同期対象オブジェクトに対して DDL 文を実行した場合、ターゲットデータベースでも手動で同じ文を実行し、タスクを再起動する必要があります。
サポートされる DML 操作
INSERT、UPDATE、DELETE 操作のみがサポートされています。
事前準備
-
ソースの ApsaraDB RDS for PostgreSQL インスタンスの
wal_levelパラメーターを変更します。警告wal_levelパラメーターを変更した後、変更を有効にするにはインスタンスを再起動する必要があります。ご利用のサービスへの影響を評価し、オフピーク時にこの操作を実行してください。-
ApsaraDB RDS コンソールにログインします。
-
左側のナビゲーションウィンドウで、インスタンス をクリックします。
-
ページの左上隅で、インスタンスが配置されているリージョンを選択します。
-
対象のインスタンスを見つけて、その ID をクリックします。
-
左側のナビゲーションウィンドウで、パラメーター設定 をクリックします。
-
パラメーター設定 ページで、
wal_levelパラメーターを見つけ、その値をlogicalに変更します。説明詳細については、「インスタンスパラメーターの設定」をご参照ください。
-
-
ソースインスタンスのオブジェクトスキーマに基づいて、宛先の AnalyticDB for PostgreSQL インスタンスに必要なデータベース、スキーマ、テーブルを作成します。詳細については、「SQL 構文」をご参照ください。
操作手順
-
データ同期インスタンスを購入します。詳細については、「DTS インスタンスの購入」をご参照ください。
説明インスタンスを購入する際、[ソースデータベース] を PostgreSQL、[ターゲットデータベース] を [AnalyticDB for PostgreSQL]、[同期トポロジ] を 一方向同期 に設定します。
-
DTS コンソールにログインします。
説明-
Data Management (DMS) コンソールにリダイレクトされた場合は、右下隅の
アイコンをクリックし、
アイコンをクリックして以前のバージョンの DTS コンソールに戻ることができます。 -
新しい DTS コンソールを使用している場合は、右下隅の
アイコンをクリックして以前のバージョンに戻ることができます。
-
-
左側のナビゲーションウィンドウで、データ同期 をクリックします。
-
[同期タスク] ページの上部で、宛先インスタンスが配置されているリージョンを選択します。
-
購入したデータ同期タスクを見つけ、[タスクの設定] をクリックします。
-
ソースインスタンスと宛先インスタンスを設定します。

セクション
パラメーター
説明
N/A
同期タスク名
DTS は自動的にタスク名を生成します。簡単に識別できるように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
RDS インスタンス を選択します。
インスタンスリージョン
購入ページで選択したソースインスタンスのリージョンです。このパラメーターは変更できません。
インスタンス ID
ApsaraDB RDS for PostgreSQL インスタンスの ID を選択します。
データベース名
同期したいテーブルが含まれるデータベースの名前を入力します。
データベースアカウント
ApsaraDB RDS for PostgreSQL インスタンスの権限を持つデータベースアカウントを入力します。アカウントは選択したデータベースのオーナーである必要があります。
説明ソースが ApsaraDB RDS for PostgreSQL 9.4 インスタンスで、DML 操作のみを同期する場合、アカウントにはレプリケーション権限のみが必要です。
データベースパスワード
データベースアカウントのパスワードを入力します。
宛先インスタンスの詳細
インスタンスタイプ
これは AnalyticDB for PostgreSQL に固定されており、変更できません。
インスタンスリージョン
購入ページで選択した宛先インスタンスのリージョンです。このパラメーターは変更できません。
インスタンス ID
AnalyticDB for PostgreSQL インスタンスの ID を選択します。
データベース名
ターゲットデータベースの名前を入力します。
説明このデータベースは AnalyticDB for PostgreSQL インスタンスに存在する必要があります。存在しない場合は、データベースを作成してください。
データベースアカウント
AnalyticDB for PostgreSQL インスタンスの初期アカウントを入力します。詳細については、「データベースアカウントの作成と管理」をご参照ください。
説明RDS_SUPERUSER 権限を持つアカウントを入力することもできます。詳細については、「ユーザー権限の管理」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
-
ページの右下隅にある [ホワイトリストを設定して次へ] をクリックします。
ソースまたはターゲットデータベースが 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 は選択したオブジェクトの既存データをソースインスタンスから宛先インスタンスに同期します。このデータは、後続の増分同期のベースラインとして機能します。
既存テーブルの処理モード
-
[データをクリア]
事前チェックフェーズで「宛先テーブルが空です」のチェックをスキップします。完全データ同期の前に宛先テーブルからデータをクリアします。このモードは、テスト完了後の本番同期に適しています。
-
エラーを無視して続行
事前チェックフェーズで「宛先テーブルが空です」のチェックをスキップします。完全データ同期中にデータを直接追加します。このモードは、複数のテーブルのデータを単一のテーブルに集約するシナリオに適しています。
同期操作タイプ
ビジネスニーズに基づいて同期する操作タイプを選択します:
説明AlterTable はサポートされていません。
-
[Insert]
-
[Update]
-
[Delete]
-
AlterTable
同期するオブジェクトの選択
N/A
ソースオブジェクト ボックスで同期するテーブルを選択し、
アイコンをクリックして 選択中のオブジェクト ボックスに移動します。説明-
オブジェクトはテーブルレベルでのみ選択できます。
-
宛先テーブルの列名をソーステーブルと異なるものにする必要がある場合は、DTS の列マッピング機能を使用します。詳細については、「宛先インスタンスでのオブジェクト名の設定」をご参照ください。
オブジェクト名のマッピング
N/A
宛先インスタンスで同期されるオブジェクトの名前を変更します。詳細については、「データベース、テーブル、列のマッピング」をご参照ください。
重要列マッピングを使用し、テーブル全体を同期しない場合、またはソースと宛先のテーブルスキーマが一致しない場合、ソーステーブルにのみ存在する列のデータは宛先側で失われます。
接続再試行期間
N/A
DTS がソースまたは宛先インスタンスに接続できない場合、デフォルトで 720 分 (12 時間) 再試行します。カスタムの再試行期間を指定することもできます。指定された期間内に DTS がソースまたは宛先インスタンスに再接続すると、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。
説明接続再試行中のタスク実行時間に対して課金されます。ビジネスニーズに基づいて再試行期間をカスタマイズするか、ソースと宛先のインスタンスがリリースされたらすぐに DTS インスタンスをリリースしてください。
-
-
上記の設定を完了した後、ページの右下隅にある [事前チェックして開始] をクリックします。
説明-
同期タスクが開始される前に事前チェックが実行され、合格した場合にのみタスクを開始できます。
-
事前チェックが失敗した場合は、失敗した項目の横にある
アイコンをクリックして詳細を表示します。-
原因に基づいて問題を修正し、再度事前チェックを実行できます。
-
警告をトリガーした項目を修正する必要がない場合は、無視 または [警告を無視して事前チェックを再実行] をクリックして警告をスキップし、再度事前チェックを実行できます。
-
-
-
事前チェック ダイアログボックスに 事前チェック完了 と表示されたら、事前チェック ダイアログボックスを閉じます。同期タスクは自動的に開始されます。
-
タスクが初期化を完了し、同期中 状態になるまで待ちます。
データ同期 ページでデータ同期タスクのステータスを表示できます。