このトピックでは、Express Connect、VPN Gateway、または Smart Access Gateway を介して Alibaba Cloud に接続された自己管理 MySQL データベースから、AnalyticDB for PostgreSQL インスタンスへデータを Data Transmission Service (DTS) を使用して継続的に同期する方法について説明します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
バージョン 5.1、5.5、5.6、5.7、または 8.0 の自己管理 MySQL データベースが稼働中であること
すべてのソーステーブルにプライマリキーが定義されていること
ソース MySQL データベースでバイナリロギングが有効化されていること
同期対象のオブジェクトに対する SELECT、 REPLICATION CLIENT、 REPLICATION SLAVE、および SHOW VIEW の権限を持つ、ソース MySQL データベース上のデータベースアカウント。 設定手順については、「自己管理 MySQL データベースのアカウントを作成し、バイナリロギングを設定する」をご参照ください。
Express Connect、VPN Gateway、または Smart Access Gateway を介して Alibaba Cloud VPC に接続されたオンプレミスネットワークで、DTS がネットワークにアクセスできるようにします。設定手順については、「VPN Gateway を使用してデータセンターを DTS に接続する」をご参照ください。
VPC へのオンプレミスネットワークの接続方法の概要については、「オンプレミスデータベースを Alibaba Cloud に接続する」をご参照ください。
送信先の AnalyticDB for PostgreSQL インスタンス。設定手順については、「AnalyticDB for PostgreSQL インスタンスの作成」をご参照ください。
制限事項
サポートされるオブジェクト:テーブルのみ。データベースおよびその他のオブジェクトタイプは同期対象として選択できません。
サポートされないデータの型:BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT、POINT。これらのデータの型を持つカラムは同期時にスキップされます。
プレフィックスインデックス:プレフィックスインデックスは同期されません。ソースデータベースにプレフィックスインデックスが含まれている場合、データ同期が失敗する可能性があります。
DDL 操作: ADD COLUMN のみが同期されます。CREATE TABLE はサポートされていません。新しいテーブルからデータを同期するには、手動でそのテーブルを選択されたオブジェクトに追加してください。詳細については、「データ同期タスクにオブジェクトを追加する」をご参照ください。
オンラインスキーマ変更ツール:同期実行中に、gh-ost や pt-online-schema-change を使用してソースオブジェクトに対して DDL 操作を実行しないでください。これにより、同期タスクが失敗する可能性があります。
同期可能な SQL 操作
DML:INSERT、UPDATE、DELETE
DDL:ADD COLUMN
サポートされる同期トポロジ
単方向・一対一同期
単方向・一対多同期
単方向・多対一同期
用語対応表
| MySQL | AnalyticDB for PostgreSQL |
|---|---|
| Database | Schema |
| Table | Table |
パフォーマンスに関する考慮事項
初期完全同期中、DTS はソースデータベースから読み取り、宛先データベースへ書き込みを行います。これにより、両方のデータベースサーバーの負荷が増加します。リスクを低減するため、以下の点にご注意ください。
CPU 使用率がソースおよび宛先データベースともに 30 % 未満となる非ピーク時間帯に同期タスクを実行してください。
同期中に、ソースデータベース上で多数の遅延 SQL クエリを実行しないでください。
開始前にソーステーブルにプライマリキーが定義されていることを確認してください(プライマリキーのないテーブルは、リソース使用量を大幅に増加させます)。
データ同期の設定
ステップ 1:DTS 同期インスタンスの購入
「DTS インスタンスを購入する」を参照して、データ同期インスタンスを購入します。
購入ページで、以下のオプションを設定してください。
ソースインスタンス:MySQL
ターゲットインスタンス:AnalyticDB for PostgreSQL
同期トポロジ:単方向同期
ステップ 2:同期チャネルの設定
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
同期タスク ページの上部で、宛先インスタンスが配置されているリージョンを選択します。
購入した同期インスタンスを見つけ、[操作] 列の 同期チャネルの設定 をクリックします。
ソースおよび宛先インスタンスを設定します。
ソースインスタンス
パラメーター 説明 同期タスク名 DTS が自動生成する名前です。識別しやすいように、意味のある名前を指定してください。名前は一意である必要はありません。 インスタンスタイプ Express Connect、VPN Gateway、または Smart Access Gateway を介して接続されたユーザー管理のデータベース を選択します。 インスタンスリージョン 購入ページから事前に入力済みです。変更できません。 ピア VPC 自己管理 MySQL データベースに接続された VPC の ID を選択します。 データベースタイプ 事前に MySQL が入力済みです。変更できません。 IP アドレス 自己管理 MySQL データベースのサーバー IP アドレスを入力します。 ポート番号 ソースデータベースのサービスポートを入力します。デフォルト値:3306。 データベースアカウント DTS 用に作成した MySQL アカウントを入力します。このアカウントには、SELECT、REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW 権限が必要です。 データベースパスワード データベースアカウントのパスワードを入力します。 宛先インスタンス
パラメーター 説明 インスタンスタイプ 事前に AnalyticDB for PostgreSQL が入力済みです。変更できません。 インスタンスリージョン 購入ページから事前に入力済みです。変更できません。 インスタンス ID 宛先の AnalyticDB for PostgreSQL インスタンスを選択します。 データベース名 宛先データベースの名前を入力します。 データベースアカウント AnalyticDB for PostgreSQL インスタンスの [初期アカウント]、または RDS_SUPERUSERロールを持つアカウントを入力します。詳細については、「データベースアカウントの作成」および「ユーザーと権限の管理」をご参照ください。データベースパスワード データベースアカウントのパスワードを入力します。 
ホワイトリストの設定と次へ をクリックします。
DTS は、宛先 AnalyticDB for PostgreSQL インスタンスのホワイトリストに、自身のサーバー CIDR ブロックを自動的に追加し、DTS がインスタンスに接続できるようにします。
同期ポリシーとオブジェクトを選択します。同期対象のオブジェクト [利用可能] セクションで、同期するテーブルを選択し、
をクリックして、[選択済み] セクションに移動します。同期対象として選択できるのは、テーブルのみです。宛先インスタンス内のオブジェクトの名前を変更するには、オブジェクト名マッピング機能を使用します。詳細については、「同期対象のオブジェクト名を変更する」をご参照ください。
リトライ期間中も DTS インスタンスに対して課金されます。ソースおよび宛先インスタンスをリリースした場合は、速やかに DTS インスタンスもリリースしてください。
同期ポリシー
設定項目 選択肢 初期同期 ほとんどの場合、初期スキーマ同期 および 初期完全同期 の両方を選択してください。DTS は、増分同期を開始する前に、ソースから宛先へスキーマおよび既存データを同期します。 競合テーブルの処理モード 宛先テーブルのクリア:スキーマ名競合の事前チェック項目をスキップし、初期完全同期前に宛先テーブルのデータをクリアします。テスト後に本番環境で同期を実行する場合に使用します。無視:スキーマ名競合の事前チェック項目をスキップし、初期完全同期時に既存データに追加します。複数のテーブルから 1 つのテーブルへデータをマージする場合に使用します。 同期タイプ 同期対象の DML および DDL 操作を選択します:Insert、Update、Delete、AlterTable。 追加設定
設定項目 説明 データベースおよびテーブル名の変更 オブジェクト名マッピングを使用して、送信先のオブジェクトの名前を変更します。詳細については、「オブジェクト名マッピング」をご参照ください。 DMS による DDL 操作実行時の一時テーブルのレプリケーション Data Management (DMS)ソースで を使用してオンライン DDL を実行する場合、DMS が生成する一時テーブルをレプリケートするかどうかを選択します。はい:一時テーブルのデータをレプリケートします(DDL によって大量のデータが生成される場合、同期遅延が発生する可能性があります)。いいえ:元の DDL 変更のみをレプリケートし、一時テーブルはレプリケートしません(宛先でテーブルロックが発生する可能性があります)。 接続失敗時のリトライ時間 DTS が接続失敗時に再試行する時間枠です。タスクが失敗と判定されるまでの時間です。デフォルト値:720 分(12 時間)。ビジネス要件に応じて設定してください。時間枠内に DTS が再接続できた場合、タスクは自動的に再開されます。 
[初期スキーマ同期] を選択した場合、次のページで各テーブルのプライマリキー列と分布列を指定します。これらの設定のバックグラウンドについては、「制約の定義」および「テーブルディストリビューションの定義」をご参照ください。

事前チェック をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックに合格しない限り、タスクは開始できません。いずれかの事前チェック項目が失敗した場合、失敗した項目の横にある
アイコンをクリックして詳細を表示し、問題を修正したうえで再度事前チェックを実行してください。失敗した項目がご利用のユースケースにおいて重大でない場合は、無視して再度事前チェックを実行できます。メッセージ 事前チェックが正常に完了しました。 が表示されたら、事前チェック ダイアログボックスを閉じます。同期タスクは自動的に開始されます。
初期同期の完了までお待ちください。増分同期が開始されると、タスクのステータスが 同期中 に変わります。同期タスク ページでタスクのステータスを監視してください。
