Data Transmission Service (DTS) を使用すると、PolarDB-X 2.0 インスタンスから AnalyticDB for PostgreSQL インスタンスへデータを継続的に同期できます。これにより、ソースデータベースへの影響を最小限に抑えながら、トランザクションデータに対するリアルタイムな分析およびクエリ実行が可能になります。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソース PolarDB-X 2.0 インスタンスからのすべてのデータを格納できる十分な空きストレージ容量を備えた AnalyticDB for PostgreSQL インスタンス。設定手順については、「インスタンスの作成」をご参照ください。
同期対象データを受信するためのデータベースを宛先インスタンス内に作成済みであること。設定手順については、「SQL 構文」の「CREATE DATABASE」セクションをご参照ください。
ソースおよび宛先データベースの両方で、適切な権限が付与されていること(詳細については、「データベースアカウントに必要な権限」をご参照ください)。
制限事項
ソースデータベース
| 制限事項 | 詳細 |
|---|---|
| テーブル要件 | テーブルには PRIMARY KEY または一意制約(UNIQUE constraint)が必要であり、すべてのフィールドが一意である必要があります。これらの制約がないテーブルを使用すると、宛先に重複行が発生する可能性があります。 |
| テーブル数(オブジェクト名の編集時) | 宛先でテーブルまたはカラムの名前を変更する場合、1 つのタスクで最大 5,000 個のテーブルをサポートします。この上限を超えるとリクエストエラーが発生します。作業を複数のタスクに分割するか、データベースレベルでの同期を選択してください。 |
| バイナリログ | パラメーター設定PolarDB-X 2.0 コンソールでバイナリログを有効化する必要があります(「」をご参照ください)。また、binlog_row_image パラメーターは full に設定する必要があります。いずれかの要件を満たさないと、事前チェックが失敗し、タスクを開始できません。 |
| バイナリログの保持期間 | 増分同期のみの場合:バイナリログを最低 24 時間保持してください。完全同期+増分同期の場合:バイナリログを最低 7 日間保持してください。完全同期完了後は、保持期間を 24 時間以上に設定できます。DTS がバイナリログを読み取れない場合、タスクは失敗し、データの不整合または損失が発生する可能性があります。 |
| MySQL 互換性 | PolarDB-X インスタンスは MySQL V5.7 と互換である必要があります。 |
その他の制限事項
同期対象として選択できるのはテーブルのみです。Append-optimized(AO)テーブルはサポートされていません。
ソースと宛先のカラムマッピングが不完全である場合、またはスキーマが異なる場合、マッピングされていないカラムのデータは失われます。
同期タスクは非ピーク時間帯に実行してください。初期の完全データ同期では、ソースおよび宛先データベースの読み取り・書き込みリソースが使用されるため、サーバー負荷が増加する可能性があります。
初期の完全データ同期中に並列 INSERT 操作を実行すると、宛先でテーブルの断片化が発生し、完全同期完了後に宛先の表領域がソースよりも大きくなります。
同期中は、宛先データベースへの書き込みを DTS のみで行ってください。他のツールによる書き込みはデータの不整合を引き起こし、DMS のオンライン DDL 操作は宛先データベースにおけるデータ損失を招く可能性があります。
特殊ケース
DTS は定期的にソースデータベース内の dts_health_check.ha_health_check テーブルを更新して、バイナリログ位置を進めます。
課金
| 同期タイプ | コスト |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 課金概要課金対象です。詳細については、「」をご参照ください。 |
サポートされる SQL 操作
DTS は以下の SQL 操作を同期します。
DML: INSERT、UPDATE、DELETE
DDL: ADD COLUMN
CREATE TABLE はサポートされていません。新しく作成されたテーブルを同期するには、手動で選択対象オブジェクトに追加してください。「データ同期タスクへのオブジェクトの追加」をご参照ください。
データベースアカウントに必要な権限
同期タスクを作成する前に、データベースアカウントに必要な権限を付与してください。
| データベース | 必要な権限 |
|---|---|
| ソース PolarDB-X 2.0 | 同期対象オブジェクトに対する SELECT、REPLICATION SLAVE、REPLICATION CLIENT |
| 宛先 AnalyticDB for PostgreSQL | 宛先データベースに対する読み取りおよび書き込み権限。初期アカウント、または RDS_SUPERUSER 権限を持つアカウントを使用してください。 |
詳細については、「データベースアカウントの管理」および「データ同期に必要な権限」をご参照ください。
宛先 AnalyticDB for PostgreSQL インスタンスについては、「データベースアカウントの作成」および「アカウント権限の管理」をご参照ください。
同期タスクの作成
ステップ 1:データ同期タスクページへ移動
DMS コンソール にログインします。
上部ナビゲーションバーで、DTS をクリックします。
左側ナビゲーションウィンドウで、DTS(DTS) > データ同期 を選択します。
実際のナビゲーションは、お客様の DMS モードおよびレイアウトによって異なる場合があります。『シンプルモード』および『DMS コンソールのレイアウトとスタイルのカスタマイズ』をご参照ください。または、新しい DTS コンソールの『データ同期タスクページ』に直接アクセスしてください。
ステップ 2:リージョンの選択
データ同期タスク の右側にあるドロップダウンリストから、タスクを作成するリージョンを選択します。新しい DTS コンソールのデータ同期タスクページ
新しい DTS コンソールでは、ページの左上隅からリージョンを選択します。
ステップ 3:ソースおよび宛先データベースの設定
タスクの作成 をクリックします。タスク作成ウィザードで、以下のパラメーターを設定します。
ソースデータベース
| パラメーター | 値 |
|---|---|
| タスク名 | タスクを識別しやすい説明的な名前を指定します。DTS が自動的に名前を割り当てますが、意味のある名前を付けると後でタスクを特定しやすくなります。タスク名は一意である必要はありません。 |
| 既存の DMS データベースインスタンスを選択 | (任意)登録済みの既存インスタンスを選択すると、データベースパラメーターが自動入力されます。この項目をスキップした場合は、パラメーターを手動で設定してください。 |
| データベースタイプ | PolarDB-X 2.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | PolarDB-X 2.0 インスタンスのリージョン。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内での同期の場合は、いいえ を選択します。 |
| インスタンス ID | PolarDB-X 2.0 インスタンスの ID。 |
| データベースアカウント | PolarDB-X 2.0 インスタンスのアカウント。詳細については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
宛先データベース
| パラメーター | 値 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | (任意)登録済みの既存インスタンスを選択すると、データベースパラメーターが自動入力されます。この項目をスキップした場合は、パラメーターを手動で設定してください。 |
| データベースタイプ | AnalyticDB for PostgreSQL を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンス リージョン | AnalyticDB for PostgreSQL インスタンスのリージョン。 |
| インスタンス ID | AnalyticDB for PostgreSQL インスタンスの ID。 |
| データベース名 | 同期対象データを受信する宛先インスタンス内のデータベース名。 |
| データベースアカウント | AnalyticDB for PostgreSQL インスタンスのアカウント。詳細については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
ステップ 4:接続性のテスト
接続性のテストと続行 をクリックします。
DTS は、そのサーバーの CIDR ブロックを自動的に Alibaba Cloud データベースインスタンスのホワイトリスト、および自己管理データベースをホストする Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに追加します。オンプレミスデータセンターまたはサードパーティクラウド内の自己管理データベースの場合、DTS サーバーの CIDR ブロックをデータベースのホワイトリストに手動で追加します。「オンプレミスデータベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループに追加することは、潜在的なセキュリティリスクを伴います。続行する前に、認証情報の強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期監査、不正な CIDR ブロックのブロックなど、保護措置を講じてください。Express Connect、VPN Gateway、または Smart Access Gateway(SAG)を経由した接続を検討することで、セキュリティをさらに強化できます。
ステップ 5:オブジェクトおよび同期タイプの選択
以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 同期タイプ | 以下の 3 つすべてを選択します:スキーマ同期、完全データ同期、および 増分データ同期。DTS ではデフォルトで 増分データ同期 が事前に選択されています。完全データ同期では、まず履歴データを移行し、継続的な増分同期のベースラインを確立します。 |
| 競合テーブルの処理モード | [事前チェックとエラー報告](推奨):DTS は開始前にテーブル名の競合をチェックします。競合が存在する場合、事前チェックは失敗します。オブジェクト名マッピングを使用して、送信先の競合するテーブルの名前を変更します。[エラーを無視して続行]:競合チェックをスキップします。完全同期中は、DTS が競合する行をスキップし、既存の送信先データを保持します。増分同期中は、競合する行が送信先データを上書きします。スキーマが異なる場合、初期化に失敗するか、列が欠落する可能性があります。注意して使用してください。 |
| 宛先インスタンスにおけるオブジェクト名の大文字小文字の設定 | 宛先におけるデータベース、テーブル、カラム名の大文字小文字の形式が、ソースまたは宛先の規則に従うかどうかを制御します。デフォルトは DTS デフォルトポリシー宛先インスタンスでのオブジェクト名の大文字/小文字の指定 です。「」をご参照ください。 |
| ソースオブジェクト | ソースオブジェクト から 1 つ以上のテーブルを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。テーブルのみがサポートされており、ビュー、トリガー、ストアドプロシージャは同期されません。 |
| 選択済みオブジェクト | オブジェクトを右クリックすると、名前の変更、WHERE フィルター条件の設定、同期対象の SQL 操作の選択が可能です。一括編集 をクリックすると、複数のオブジェクトを一度に名前変更できます。ただし、オブジェクトの名前を変更すると、依存オブジェクトの同期が失敗する可能性があります。 |
ステップ 6:高度な設定の構成
次へ:高度な設定 をクリックし、以下の項目を設定します。
| パラメーター | 説明 |
|---|---|
| タスクのスケジュールに使用する専用クラスターの選択 | 専用クラスターを購入していない限り、デフォルト(共有クラスター)のままにしてください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| アラートの設定 | タスクが失敗した場合、または同期遅延がしきい値を超えた場合に通知を受信するには、[はい] を選択します。アラートのしきい値と連絡先を設定します。詳細については、「DTS タスクを作成する際のモニタリングとアラートの設定」をご参照ください。 |
| 接続失敗時の再試行時間 | タスク開始後の接続失敗時に DTS が再試行する持続時間です。30 分より大きい値を設定してください(有効範囲:10~1,440 分;デフォルト:720 分)。複数のタスクが同じソースまたは宛先を共有する場合、それらのタスクの中で最も短い再試行時間が適用されます。 |
| その他の問題発生時の再試行待機時間 | DDL または DML 操作の失敗後に DTS が再試行する持続時間です。10 分より大きい値を設定してください(有効範囲:1~1,440 分;デフォルト:10 分)。この値は、接続失敗時の再試行時間 よりも小さくする必要があります。 |
| 完全データ移行のスロットル機能の有効化 | ソースデータベースへのクエリ数/秒(QPS)、完全データ移行の RPS、および 完全データ移行の BPS を設定して、完全同期中の宛先負荷を軽減します。完全データ同期 が選択されている場合にのみ利用可能です。 |
| 増分データ同期のスロットル機能の有効化 | 増分データ移行の RPS および 増分データ移行の BPS を設定して、増分同期中の宛先負荷を軽減します。 |
| 環境タグ | (任意)DTS インスタンスを識別するためのタグを設定します。 |
| フォワードおよびリバースタスクのハートビートテーブルに対する SQL 操作の削除有無 | ハートビート操作がソースデータベースに書き込まれないようにするには、はい を選択します。これにより物理バックアップおよびクローン作成への影響を回避できますが、DTS コンソール上で同期遅延のオフセットが表示される場合があります。いいえ を選択すると、ハートビート操作がソースデータベースに書き込まれます。物理バックアップおよびクローン作成などの特定機能に影響が出る可能性があります。 |
| ETL の設定 | 抽出・変換・書き出し (ETL) 機能を設定し、コードエディタにデータ処理文を入力するには、[はい] を選択します。詳細については、「データ移行または同期タスクで ETL を設定する」をご参照ください。 |
ステップ 7:(任意)データベースおよびテーブルフィールドの設定
次へ:データベースおよびテーブルフィールドの設定 をクリックします。
このページでは、AnalyticDB for PostgreSQL へ同期する各テーブルについて、タイプ、プライマリキー列、分散キーを指定します。このステップは、ステップ 5 で スキーマ同期 を選択した場合にのみ利用可能です。
定義ステータス を すべて に設定すると、すべてのテーブルを表示および編集できます。
プライマリキー列 では、複数のカラムを指定して複合プライマリキーを構成できます。少なくとも 1 つのプライマリキー列を分散キーとしても設定する必要があります。「テーブルの管理」および「テーブル分散の定義」をご参照ください。
ステップ 8:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
DTS はタスク開始前に事前チェックを実行します。すべてのチェックが合格した場合にのみ、タスクを続行できます。
チェックに失敗した場合は、失敗項目の横にある 詳細の表示 をクリックし、問題を解決した後、再度事前チェックを実行してください。
安全に無視できる項目に対してアラートがトリガーされた場合は、アラートの詳細の確認 をクリックし、次に 無視 をクリックして OK で確認し、再チェック をクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
このインスタンスの設定に使用される API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック 上にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックしてください。
ステップ 9:インスタンスの購入
事前チェックの合格率が 100% に達するまで待ち、その後 次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、以下の項目を設定します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:1~9 か月、または 1、2、3、5 年分を前払いします。長期間実行するタスクにコスト効率が良いです。従量課金:時間単位で課金されます。短期間のタスクに適しており、不要になった時点でインスタンスをリリースすれば課金を停止できます。 |
| リソースグループ | インスタンスのリソースグループ。デフォルト: デフォルト リソースグループ。「Resource Management とは?」をご参照ください。 |
| インスタンスクラス | 同期仕様によって、スループットとパフォーマンスが決まります。データ量とレイテンシー要件に基づいて選択してください。詳細については、「データ同期インスタンスの仕様」をご参照ください。 |
ステップ 10:タスクの開始
Data Transmission Service(従量課金)サービス利用規約 をお読みになり、同意した後、購入して開始 をクリックします。
同期タスクが開始されます。タスクリストで進行状況を確認できます。