AnalyticDB for PostgreSQL(旧称:HybridDB for PostgreSQL)は、ペタバイト規模のデータを高速に処理可能な、使いやすくコスト効率の高いデータウェアハウスサービスです。Data Transmission Service(DTS)を使用して、PolarDB for MySQL クラスターから AnalyticDB for PostgreSQL インスタンスへデータを同期します。この構成は、アドホックなクエリと分析、抽出・変換・書き出し(ETL)処理、およびデータビジュアライゼーション(大画面表示)などのユースケースで広く採用されています。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
PolarDB for MySQL クラスターでバイナリロギングが有効になっています。詳細については、「Binlog の有効化方法」をご参照ください。
同期対象となる PolarDB for MySQL クラスター内のすべてのテーブルにプライマリキーが定義されていること。
AnalyticDB for PostgreSQL インスタンスが作成されました。詳細については、「AnalyticDB for PostgreSQL インスタンスの作成AnalyticDB for PostgreSQL インスタンスの作成」をご参照ください。
サポートされる同期トポロジ
単方向 1 対 1 同期
単方向 1 対多 同期
単方向 多対 1 同期
制限事項
| 制限事項 | 適用範囲 |
|---|---|
| 同期対象として選択できるのは、テーブルのみです。 | 初期完全同期および増分同期 |
| 以下のデータの型は同期できません:BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT、POINT。 | 初期完全同期および増分同期 |
| プレフィックスインデックスは同期できません。ソースデータベースにプレフィックスインデックスが存在する場合、同期が失敗する可能性があります。 | 初期完全同期および増分同期 |
| 同期中に gh-ost や pt-online-schema-change を使用して、同期対象オブジェクトに対して DDL 操作を実行しないでください。これにより、同期が失敗する可能性があります。 | 増分同期 |
| サポートされる DML 操作:INSERT、UPDATE、DELETE。 | 増分同期 |
| サポートされる DDL 操作: ADD COLUMN のみ。CREATE TABLE はサポートされていません。新しいテーブルからデータを同期するには、そのテーブルを選択されたオブジェクトに追加します。詳細については、「データ同期タスクにオブジェクトを追加する」をご参照ください。 | 増分同期 |
用語の対応関係
| PolarDB for MySQL | AnalyticDB for PostgreSQL |
|---|---|
| データベース | スキーマ |
| テーブル | テーブル |
同期タスクの設定
ステップ 1:DTS インスタンスの購入
DTS インスタンスの購入を行います。購入ページで、以下のオプションを設定します。
ソースインスタンス:PolarDB
ターゲットインスタンス:AnalyticDB for PostgreSQL
同期トポロジ:単方向同期
ステップ 2:同期チャネルの設定
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期をクリックします。
同期タスクページの上部で、宛先インスタンスが配置されているリージョンを選択します。
同期インスタンスを検索し、[操作] 列の 同期チャネルの設定 をクリックします。
ソースおよび宛先インスタンスを設定します。
ソースインスタンスの詳細
パラメーター 説明 同期タスク名 DTS が自動的に生成します。識別が容易なように、意味のある名前を指定してください。名前は一意である必要はありません。 インスタンスタイプ 固定値:PolarDB インスタンス。 インスタンスリージョン 購入ページで選択したソースリージョン。読み取り専用です。 PolarDB インスタンス ID PolarDB for MySQL クラスターの ID を選択します。 データベースアカウント PolarDB for MySQL クラスターのデータベースアカウントを入力します。このアカウントには、同期対象オブジェクトに対する読み取り権限が必要です。 データベースパスワード データベースアカウントのパスワードを入力します。 宛先インスタンスの詳細
パラメーター 説明 インスタンスタイプ 固定値:AnalyticDB for PostgreSQL。 インスタンスリージョン 購入ページで選択したターゲットリージョン。読み取り専用です。 インスタンス ID AnalyticDB for PostgreSQL インスタンスの ID を選択します。 データベース名 AnalyticDB for PostgreSQL インスタンス内のターゲットデータベース名を入力します。 データベースアカウント 初期アカウントを入力します。RDS_SUPERUSER 権限を持つアカウントを使用することも可能です。詳細については、「データベースアカウントの作成」および「ユーザーと権限の管理」をご参照ください。 データベースパスワード データベースアカウントのパスワードを入力します。 
右下隅の ホワイトリストの設定と次へ をクリックします。
DTS は、DTS サーバーの CIDR ブロックを PolarDB for MySQL クラスターおよび AnalyticDB for PostgreSQL インスタンスのホワイトリストに追加します。これにより、DTS サーバーがソースクラスターおよび宛先インスタンスに接続可能になります。
同期ポリシーおよび同期対象オブジェクトを選択します。
設定項目 パラメーター 説明 同期ポリシー 初期同期 ほとんどの場合、初期スキーマ同期 および 初期完全同期 の両方を選択してください。事前チェック後に、DTS は必要なオブジェクトのスキーマおよびデータをソースから宛先へ同期します。これは、その後の増分同期の基盤となります。 競合テーブルの処理モード ターゲットテーブルのクリア:事前チェック時に スキーマ名の競合 項目をスキップします。初期完全同期の前に、宛先テーブルのデータをクリアします。テスト後に業務データを同期する場合に選択してください。無視:事前チェック時に スキーマ名の競合 項目をスキップします。初期完全同期時に既存のデータに追加でデータを挿入します。複数のテーブルから 1 つのテーブルへデータを同期する場合に選択してください。 同期タイプ 同期対象の操作タイプを選択します:Insert、Update、Delete、AlterTable。 同期対象オブジェクト 該当なし 利用可能 セクションからテーブルを選択し、
アイコンをクリックして 選択済み セクションに移動します。テーブルのみを選択できます。データベースおよびテーブル名の変更 該当なし オブジェクト名マッピング機能を使用して、宛先インスタンス内のオブジェクトの名前を変更します。詳細については、「オブジェクト名マッピング」をご参照ください。 DMS による DDL 操作時の一時テーブルのレプリケーション 該当なし Data Management (DMS)ソースデータベースに対して を使用してオンライン DDL 操作を実行する場合、これらの操作によって生成された一時テーブルを同期するかどうかを選択します。はい:DTS は一時テーブルのデータを同期します。オンライン DDL 操作によって大量のデータが生成される場合、同期タスクが遅延する可能性があります。いいえ:DTS は一時テーブルをスキップし、ソースからの元の DDL データのみを同期します。宛先データベース内のテーブルがロックされる可能性があります。 接続失敗時の再試行時間 該当なし デフォルトでは、DTS は最大 720 分(12 時間)まで接続失敗を再試行します。指定された期間内に DTS が再接続できた場合、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。再試行中の DTS インスタンスは課金対象となります。ビジネス要件に応じて再試行時間を設定することを推奨します。また、ソースおよび宛先インスタンスがリリースされた後は、速やかに DTS インスタンスもリリースすることを推奨します。 
AnalyticDB for PostgreSQL インスタンスへ同期する各テーブルについて、プライマリキー列および分布列を指定します。
このステップは、[初期スキーマ同期] を選択した場合にのみ表示されます。プライマリキー列と分布列の詳細については、「制約の定義」および「テーブルディストリビューションの定義」をご参照ください。

右下隅の 事前チェック をクリックします。
DTS は同期タスク開始前に事前チェックを実行します。事前チェックが正常に完了した場合にのみ、同期タスクが開始されます。いずれかのチェック項目が失敗した場合、失敗した項目の横にある
アイコンをクリックして詳細を表示し、問題を修正したうえで再度事前チェックを実行してください。一部の失敗項目を修正しない場合は、それらを無視して再度事前チェックを実行できます。「事前チェックが正常に完了しました。」というメッセージが表示されたら、ダイアログボックスを閉じます。同期タスクは自動的に開始されます。
初期同期の完了を待ちます。「同期タスク」ページで、タスクのステータスが 同期中 に変更されます。

パフォーマンスに関する考慮事項
初期完全同期中、DTS はソースおよび宛先データベースの読み取りおよび書き込みリソースを使用します。これにより、両方のサーバーの負荷が増加します。データベースの仕様が低性能である場合や、データ量が非常に大きい場合、追加の負荷によってサービス障害が発生する可能性があります。主な原因には以下のようなものがあります。
ソースデータベースにおける多数の遅延 SQL クエリ
プライマリキーが定義されていないテーブル
宛先データベースにおけるデッドロック
CPU 使用率が両方のデータベースで 30 % 未満となる非ピーク時間帯に同期を実行することを推奨します。
初期完全同期中の同時 INSERT 操作により、宛先テーブルに断片化が発生します。初期完全同期が完了した後、宛先インスタンスの表領域はソースクラスターよりも大きくなります。