AnalyticDB for PostgreSQL (以前はHybridDB for PostgreSQLと呼ばれていました) は、ペタバイト単位のデータを処理できる、高速で使いやすく、費用対効果の高い倉庫サービスです。 このトピックでは、data Transmission Service (DTS) を使用して、PolarDB for MySQLクラスターからAnalyticDB for PostgreSQLインスタンスにデータを同期する方法について説明します。 データ同期機能は、アドホックなクエリと分析、抽出、変換、読み込み (ETL) 操作、データの視覚化などのシナリオに適用できます。
前提条件
- PolarDB for MySQLクラスターでバイナリログ機能が有効になっています。 詳細については、以下をご参照ください。 バイナリログの有効化
- PolarDB for MySQLクラスターから同期されるテーブルには、プライマリキーが含まれています。
- AnalyticDB for PostgreSQLインスタンスが作成されました。 詳細については、以下をご参照ください。 AnalyticDB for PostgreSQLインスタンスの作成
注意事項
- DTSは、最初の完全データ同期中に、ソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを同期する前に、ソースデータベースとターゲットデータベースのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを同期できます。
- 最初の完全データ同期中に、同時INSERT操作により、ターゲットインスタンスのテーブルが断片化されます。 最初の完全データ同期が完了すると、ターゲットインスタンスのテーブルスペースはソースクラスターのテーブルスペースよりも大きくなります。
制限事項
- 同期するオブジェクトとしてテーブルのみを選択できます。
- DTSは、BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT、およびPOINTのタイプのデータを同期しません。
プレフィックスインデックスは同期できません。 ソースデータベースにプレフィックスインデックスが含まれている場合、データの同期に失敗する可能性があります。
- データ同期中にオブジェクトに対してDDL操作を実行するために、gh-ostまたはpt-online-schema-changeを使用しないことを推奨します。 そうしないと、データ同期が失敗する可能性があります。
同期可能なSQL操作
- DML操作: INSERT、UPDATE、およびDELETE
- DDL操作: コラムを追加 説明 CREATE TABLE操作はサポートされていません。 新しいテーブルのデータを同期するには、選択したオブジェクトにテーブルを追加する必要があります。 詳細については、「データ同期タスクへのオブジェクトの追加」をご参照ください。
サポートしている同期トポロジ
- 一方向の 1 対 1 の同期
- 一方向の 1 対多の同期
- 一方向の多対 1 の同期
タームマッピング
PolarDB for MySQL | AnalyticDB for PostgreSQL |
データベース | Schema |
テーブル | テーブル |
手順
- データ同期インスタンスを購入します。 詳細については、「DTSインスタンスの購入」をご参照ください。 説明 購入ページで、ソースインスタンスをPolarDBに設定し、ターゲットインスタンスをAnalyticDB for PostgreSQLに設定し、同期トポロジを片道同期に設定します。
- にログインします。 DTSコンソール。
- 左側のナビゲーションウィンドウで、[データ同期] をクリックします。
- [同期タスク] ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。
- データ同期インスタンスを見つけ、[操作] 列の [同期チャネルの設定] をクリックします。
- ソースインスタンスとターゲットインスタンスを設定します。
セクション パラメーター 説明 N/A 同期タスク名 タスク名は自動生成されます。 簡単に識別できるように、有益な名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。 ソースインスタンスの詳細 インスタンスタイプ このパラメーターはPolarDBインスタンスに設定されており、変更できません。 インスタンスリージョン 購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。 PolarDBインスタンスID PolarDB for MySQLクラスターのIDを選択します。 データベースアカウント PolarDB for MySQLクラスターのデータベースアカウントを入力します。 説明 データベースアカウントには、同期するオブジェクトに対する読み取り権限が必要です。データベースパスワード データベースアカウントのパスワードを入力します。 ターゲットインスタンスの詳細 インスタンスタイプ このパラメーターはAnalyticDB for PostgreSQLに設定されており、変更できません。 インスタンスリージョン 購入ページで選択したターゲットリージョン。 このパラメーターの値は変更できません。 Instance ID AnalyticDB for PostgreSQLインスタンスのIDを選択します。 データベース名 AnalyticDB for PostgreSQLインスタンスのターゲットデータベースの名前を入力します。 データベースアカウント AnalyticDB for PostgreSQLインスタンスの初期アカウントを入力します。 詳細については、「データベースアカウントの作成」をご参照ください。 説明 RDS_SUPERUSER権限を持つアカウントを入力することもできます。 詳細については、「ユーザーと権限の管理」をご参照ください。データベースパスワード データベースアカウントのパスワードを入力します。 - ページの右下隅にある [ホワイトリストと次への設定] をクリックします。 説明 DTSは、DTSサーバーのCIDRブロックをPolarDB for MySQLクラスターおよびAnalyticDB for PostgreSQLインスタンスのホワイトリストに追加します。 これにより、DTSサーバーがソースクラスターとターゲットインスタンスに接続できるようになります。
- 同期ポリシーと同期するオブジェクトを選択します。
設定 パラメーター 説明 同期ポリシーの選択 初期同期 多くの場合、[スキーマ同期初期化] と [完全データ同期初期化 ] 両方を選択する必要があります。 事前チェックの後、DTSは必要なオブジェクトのスキーマとデータをソースインスタンスからターゲットインスタンスに同期します。 スキーマとデータは、後続の増分同期のベースラインとなります。 競合テーブルの処理モード - クリアターゲットテーブル
事前チェック中にスキーマ名の競合項目をスキップします。 最初の完全データ同期の前に、宛先テーブルのデータをクリアします。 データ同期タスクのテスト後にビジネスデータを同期する場合は、このモードを選択できます。
- 無視する
事前チェック中にスキーマ名の競合項目をスキップします。 最初の完全データ同期中に既存のデータにデータを追加します。 複数のテーブルから1つのテーブルにデータを同期する場合は、このモードを選択できます。
同期タイプ ビジネス要件に基づいて、同期する操作の種類を選択します。
- 挿入
- 更新
- 削除
- AlterTable
同期するオブジェクトの選択 N/A [使用可能] セクションから1つ以上のテーブルを選択し、アイコンをクリックしてテーブルを [選択済み] セクションに移動します。
説明- 同期するオブジェクトとしてテーブルのみを選択できます。
- オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期される列の名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。
データベースとテーブルの名前変更 N/A オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
DMSがDDL操作を実行するときの一時テーブルのレプリケート N/A DMSを使用してソースデータベースでオンラインDDL操作を実行する場合、オンラインDDL操作によって生成された一時テーブルを同期するかどうかを指定できます。
Yes: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期します。
説明オンラインDDL操作が大量のデータを生成する場合、データ同期タスクが遅延する可能性があります。
No: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期しません。 ソースデータベースの元のDDLデータのみが同期されます。
説明[いいえ] を選択すると、ターゲットデータベースのテーブルがロックされる可能性があります。
失敗した接続の再試行時間 N/A 既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 必要に応じて再試行時間を指定できます。 DTSが指定された時間内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
- クリアターゲットテーブル
- AnalyticDB for PostgreSQLインスタンスに同期するテーブルのプライマリキー列と配布列を指定します。 説明 このステップのページは、[初期スキーマ同期] を選択した場合にのみ表示されます。 主キー列と配布列の詳細については、 制約の定義と テーブルの配布を定義します。
ページの右下隅にあるをクリックします。事前チェック.
説明データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるアイコンをクリックして詳細を表示できます。
詳細に基づいて問題をトラブルシューティングした後、新しい事前チェックを開始します。
問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して新しい事前チェックを開始してください。
- 次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックに合格しました。 次に、データ同期タスクが開始されます。
- 初期同期が完了し、データ同期タスクが同期状態になるまで待ちます。 データ同期タスクのステータスは、[同期タスク] ページで確認できます。