Data Transmission Service (DTS) を使用すると、PolarDB-X 1.0 インスタンスから AnalyticDB for PostgreSQL インスタンスへデータを同期できます。これにより、カスタムデータパイプラインを構築することなく、分析ワークロードを一元管理できます。
前提条件
開始する前に、以下の点を確認してください。
PolarDB-X 1.0 インスタンスのストレージタイプが ApsaraDB RDS for MySQL である必要があります。PolarDB for MySQL はサポートされていません。
AnalyticDB for PostgreSQL インスタンスが存在し、そのストレージ容量がソース PolarDB-X 1.0 インスタンスの使用済みストレージ容量を超える必要があります。手順については、「インスタンスの作成」をご参照ください。
AnalyticDB for PostgreSQL インスタンス内にターゲットデータベースが作成されている必要があります。「SQL 構文」の「CREATE DATABASE」セクションをご参照ください。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期、完全データ同期 | 無料 |
| 増分データ同期 | 課金対象です。詳細は課金概要をご参照ください。 |
サポートされる SQL 操作
| 操作タイプ | ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
DDL 操作は同期されません。
必要なアカウント権限
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| ソース PolarDB-X 1.0 インスタンス | 同期対象オブジェクトに対する読み取り権限 | アカウントの管理 |
| ターゲット AnalyticDB for PostgreSQL インスタンス | ターゲットデータベースに対する読み取りおよび書き込み権限。初期アカウントまたは RDS_SUPERUSER 権限を持つアカウントでも構いません。 | データベースアカウントの作成と管理 および ユーザーと権限の管理 |
制限事項
ソースデータベースの要件
テーブルには PRIMARY KEY 制約または一意制約 (UNIQUE constraint) が必要であり、すべてのフィールドが一意である必要があります。これを満たさないと、ターゲットデータベースに重複レコードが発生する可能性があります。
一意制約のみを持つテーブルでは、スキーマ同期はサポートされません。可能な限り PRIMARY KEY 制約を持つテーブルをご利用ください。
セカンダリインデックスを持つテーブルは同期できません。
テーブルを同期対象として選択し、ターゲットでテーブル名またはカラム名の変更を予定している場合、1 つのタスクで同期できるテーブル数は最大 5,000 個です。この上限を超えるとリクエストエラーが発生します。タスクを複数に分割するか、データベースレベルでの同期をご検討ください。
接続された ApsaraDB RDS for MySQL インスタンスの
binlog_row_imageパラメーターをfullに設定する必要があります。設定されていない場合、事前チェックに失敗し、タスクを開始できません。バイナリログの保持期間:保持期間が短すぎると、DTS がバイナリログを読み取れず、タスクの失敗やデータの不整合が発生する可能性があります。バイナリログ保持期間不足による障害については、DTS のサービスレベルアグリーメント (SLA) の対象外となります。
増分データ同期のみの場合:バイナリログを最低 24 時間保持してください。
完全データ同期+増分データ同期の場合:バイナリログを最低 7 日間保持してください。完全データ同期完了後は、保持期間を 24 時間以上に短縮できます。
同期中の制限
同期中に PolarDB-X 1.0 インスタンスのネットワークタイプを変更した場合、DTS タスクのネットワーク接続設定を更新して一致させる必要があります。
ソースインスタンスの容量をスケールアップしたり、物理データベースおよびテーブルの分散構成を変更したり、シャードキーを変更したり、ソースインスタンスで DDL 操作を実行したりしないでください。これらの操作により、タスクが失敗したり、データの不整合が発生したりする可能性があります。
ピーク時間帯には、頻繁にアクセスされるテーブルの同期を避けてください。
その他の制限
ターゲットテーブルは append-optimized (AO) テーブルであってはなりません。
以下のデータ型はサポートされていません:GEOMETRY、CURVE、SURFACE、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION。
カラムマッピングを使用する場合、またはソースとターゲットのスキーマが異なる場合、ターゲットに存在しないソースカラムのデータは失われます。
PolarDB-X 1.0 のコンピュート層における読み取り専用インスタンスはサポートされていません。
PolarDB-X 1.0 では水平分割(データベースおよびテーブル単位)のみがサポートされています。垂直分割はサポートされていません。
DTS が PolarDB-X 1.0 インスタンスを同期する際、接続された ApsaraDB RDS for MySQL インスタンスごとにデータを分散し、各インスタンスに対して 1 つのサブタスクを実行します。サブタスクのステータスは タスクトポロジー に表示されます。
パフォーマンスへの影響
初期完全同期中は、DTS がソースから読み取り、ターゲットに書き込みを同時に行います。これにより、両方のデータベースの負荷が増加します。完全同期は非ピーク時間帯に実行してください。
初期完全同期完了後、同時実行の INSERT 操作により、ターゲットのテーブルが断片化します。その結果、ターゲットデータベースの使用表領域がソースよりも大きくなります。
データの不整合を防ぐため、DTS タスク実行中は、他のプロセスからターゲットデータベースへの書き込みを避けてください。
データ同期の設定
ステップ 1:データ同期ページを開く
以下のいずれかのコンソールをご利用ください。
DTS コンソール
DMS コンソール
手順は、使用している DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
ステップ 2:タスクの作成
[タスクの作成] をクリックして、タスクウィザードを開きます。
タスク設定
| パラメーター | 説明 |
|---|---|
| [タスク名] | DTS が自動的に名前を生成します。タスクを容易に識別できるよう、意味のある名前を指定してください。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | 任意設定。選択した場合、DTS が以下のパラメーターを自動的に設定します。 |
| データベースタイプ | PolarDB-X 1.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 1.0 インスタンスが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内での同期を行う場合は、いいえ を選択します。 |
| インスタンス ID | ソース PolarDB-X 1.0 インスタンスの ID です。 |
| データベースアカウント | 必要な読み取り権限を持つアカウントです。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | 任意です。選択した場合、DTS が下記のパラメーターを自動的に入力します。 |
| データベースタイプ | [AnalyticDB for PostgreSQL] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンス リージョン | ターゲット AnalyticDB for PostgreSQL インスタンスが配置されているリージョン。 |
| [インスタンス ID] | ターゲット AnalyticDB for PostgreSQL インスタンスの ID。 |
| [データベース名] | 同期データを受け取るターゲットデータベース。 |
| [データベースアカウント] | ターゲットデータベースに対する読み取りおよび書き込み権限を持つアカウント。 |
| データベース パスワード | データベースアカウントのパスワード。 |
ステップ 3:接続性のテスト
[接続性のテストと続行] をクリックします。
DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスのホワイトリストおよび自己管理データベースをホストする Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに追加します。データセンター内またはサードパーティのクラウドプロバイダーでホストされるデータベースの場合、CIDR ブロックを手動で追加してください。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、セキュリティリスクが発生する可能性があります。続行する前に、以下の予防措置を講じてください:強力な認証情報を使用する、公開ポートを最小限に抑える、API 呼び出しを認証する、ホワイトリストのエントリを定期的に確認する、不正な CIDR ブロックを削除する。また、Express Connect、VPN Gateway、または Smart Access Gateway を介して DTS とデータベースを接続することも可能です。
ステップ 4:オブジェクトおよび同期オプションの構成
[同期タイプ]
実行するフェーズを選択します。
| オプション | 説明 |
|---|---|
| [スキーマ同期] | テーブルスキーマをソースからターゲットにコピーします。DTS にテーブルの自動作成を依頼する場合に必須です。 |
| [完全データ同期] | ソースの既存データをすべてコピーします。増分同期のベースラインとして必須です。 |
| 増分データ同期 | 完全同期完了後に、ソースからの DML 変更 (INSERT、UPDATE、DELETE) を継続的に適用します。有料です。 |
デフォルトでは、[増分データ同期] が事前に選択されています。完全かつ継続的な同期パイプラインを実現するには、[スキーマ同期] および [完全データ同期] も必ず選択してください。
競合テーブルの処理モード
| モード | 動作 |
|---|---|
| [事前チェックとエラー報告] | 送信先にソースと同じ名前のテーブルが含まれている場合、事前チェックは失敗します。開始する前に競合を解決してください。送信先のテーブル名を変更するには、オブジェクト名のマップ を使用します。 |
| [エラーを無視して続行] | 同名の事前チェックをスキップします。完全同期中は、プライマリキーまたは一意キーが一致する既存のターゲットレコードが保持されます。増分同期中は、一致するレコードが上書きされます。スキーマが異なる場合、初期化に失敗するか、一部のカラムのみが同期される可能性があります。慎重にご使用ください。 |
その他のオブジェクトレベル設定
| パラメーター | 説明 |
|---|---|
| [ターゲットインスタンスにおけるオブジェクト名の大文字小文字] | 送信先におけるデータベース、テーブル、および列名の大文字小文字の区別を制御します。デフォルトは [DTS デフォルトポリシー] です。詳細については、「送信先インスタンスでのオブジェクト名の大文字小文字の指定」をご参照ください。 |
| ソースオブジェクト | オブジェクトを選択し、[選択済みオブジェクト] に移動します。テーブルのみ選択可能です。 |
| [選択済みオブジェクト] | テーブルを右クリックして、名前を変更するかフィルター条件を設定します。[一括編集] をクリックして、複数のオブジェクトを一度に名前変更します。オブジェクトの名前を変更すると、依存オブジェクトが同期に失敗する場合があります。「オブジェクト名のマッピング」および「フィルター条件の指定」をご参照ください。 |
ステップ 5:高度な設定の構成
[次へ:高度な設定] をクリックします。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング専用クラスター | Data Transmission Service (DTS) 専用クラスターとはデフォルトでは、DTS がタスクを共有クラスターにスケジュールします。より高い安定性を確保するには、専用クラスターをご購入のうえ、明示的に指定してください。詳細については、「」をご参照ください。 |
| アラートの設定 | タスクの失敗または同期遅延がしきい値を超えた場合に通知を送信します。アラートのしきい値および通知設定を構成するには、[はい]モニタリングとアラート機能の設定 を選択します。詳細については、「」をご参照ください。 |
| 接続失敗時の再試行時間 | DTS が接続失敗後に再試行を実行する期間です。有効範囲:10~1440 分。デフォルト値:720 分。30 分より大きい値を設定してください。同一のソースまたは送信先を指定した複数のタスクを構成する場合、最も短い再試行時間がすべてのタスクに適用されます。再試行中の DTS インスタンスに対しては課金されます。 |
| その他の障害発生時の再試行時間 | DTS が DDL または DML の失敗後に再試行を実行する期間です。有効範囲:1~1440 分。デフォルト値:10 分。10 分より大きい値を設定してください。接続失敗時の再試行時間 よりも小さい値を指定する必要があります。 |
| 完全データ移行におけるレート制御の有効化 | 完全データ同期時に、ソースおよび送信先への負荷を制限します。ソースデータベースへのクエリ数 (QPS)、完全データ移行の RPS、および完全移行時のデータ移行速度 (MB/s) を設定して、スループットを制御します。完全データ同期 を選択した場合のみ表示されます。 |
| 増分データ同期におけるレート制御の有効化 | 増分同期における RPS およびスループット (MB/s) を制限します。 |
| 環境タグ | DTS インスタンスを、本番環境やステージング環境などの環境タイプ別にタグ付けします。 |
| ETL の設定 | 抽出・変換・書き出し(ETL)機能を有効化します。[はい]データ移行またはデータ同期タスクでの ETL の設定 を選択すると、コードエディタでデータ処理文を入力できます。詳細については、「」をご参照ください。 |
ステップ 6:(任意)AnalyticDB for PostgreSQL のテーブルフィールドの構成
[スキーマ同期] を選択した場合、[次へ:データベースおよびテーブルフィールドの構成] をクリックして、ターゲットにおけるテーブルの作成方法を指定します。
すべてのテーブルを表示および変更するには、[定義ステータス] を [すべて] に設定します。
| フィールド | 説明 |
|---|---|
| タイプ | AnalyticDB for PostgreSQL におけるテーブルのストレージタイプ。 |
| [プライマリキー列] | 1 つ以上のカラムをプライマリキーとして指定します。複数のカラムを指定すると、複合プライマリキーになります。 |
| 分散キー | 1 つ以上のプライマリキー列を分散キーとして指定します。少なくとも 1 つのプライマリキー列を分散キーとして指定する必要があります。「テーブルの管理」および「テーブル分散の定義」をご参照ください。 |
ステップ 7:事前チェックの実行
[次へ:タスク設定の保存と事前チェック] をクリックします。
保存前にこのタスク構成の API パラメーターを確認するには、[次へ:タスク設定の保存と事前チェック] にポインターを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックの結果は以下の 2 種類に分けられます。
失敗: このチェック項目はタスクの開始を妨げます。問題を修正し、[再チェック] をクリックしてください。
警告: タスクは続行可能ですが、問題がデータやビジネスに影響を与える可能性があります。各警告項目を確認し、修正するか、承認して続行するかを判断してください。警告を無視すると、データの不整合が発生する可能性があります。
修正する場合:問題を修正し、[再チェック] をクリックしてください。
承認する場合:[アラート詳細の確認] をクリックし、ダイアログボックスで [無視] をクリック、[OK] をクリックした後、[再チェック] をクリックしてください。
ステップ 8:インスタンスの購入および開始
[成功率] が [100%] に達したら、[次へ:インスタンスの購入] をクリックします。
[購入] ページで、インスタンスを構成します。
| セクション | パラメーター | 説明 |
|---|---|---|
| 新規インスタンスクラス | 課金方法 | [サブスクリプション]:固定期間の前払い方式。長期利用にコスト効率的です。[従量課金]:時間単位で課金されます。不要になった時点でインスタンスを解放すれば、課金を停止できます。 |
| リソースグループ設定 | 同期インスタンスのリソースグループ。デフォルト: [デフォルトリソースグループ]。 | |
| インスタンスクラス | 同期スループットを決定します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 | |
| サブスクリプション期間 | [サブスクリプション] を選択した場合に利用可能です。選択肢:1~9 か月、または 1、2、3、5 年。 |
Data Transmission Service (従量課金) サービス利用規約 をお読みになり、同意のうえ、[購入および開始] をクリックします。確認ダイアログボックスで [OK] をクリックします。
タスクがタスクリストに表示されます。そこから進行状況を監視できます。