Data Transmission Service (DTS) を使用して、PolarDB for MySQL クラスターから PolarDB-X 1.0 インスタンスへデータを継続的に同期します。DTS は、ソースデータベースへの影響を最小限に抑えながら、完全データ同期および継続的な増分同期の両方をサポートします。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ストレージ容量が、ソースの PolarDB for MySQL クラスター内の全データサイズより大きい PolarDB-X 1.0 インスタンス。インスタンス作成時に、ストレージタイプとして RDS MySQL を選択します。詳細については、「PolarDB-X 1.0 インスタンスの作成」をご参照ください。
宛先インスタンスに事前に作成済みのデータベースおよびテーブル。DTS はデータのみを同期し、スキーマは同期しません。詳細については、「データベースの作成」および「基本的な SQL 操作」をご参照ください。
ソースの PolarDB for MySQL クラスター上に、読み取りおよび書き込み権限を持つデータベースアカウント。詳細については、「データベースアカウントの作成と管理」をご参照ください。
宛先の PolarDB-X 1.0 インスタンス上に、読み取りおよび書き込み権限を持つデータベースアカウント。詳細については、「データベースアカウントの管理」をご参照ください。
課金
| 同期タイプ | 料金 |
|---|---|
| 完全データ同期 | 無料 |
| 増分データ同期 | 有料。詳細については、「課金概要 |
制限事項
ソースデータベースの要件
テーブルにはプライマリキーまたは一意制約(UNIQUE constraint)が必要であり、すべてのフィールド値が一意である必要があります。該当しない場合、宛先に重複レコードが生成される可能性があります。
宛先でテーブル名またはカラム名を変更する場合、1 つのタスクで最大 1,000 個のテーブルをサポートします。1,000 個を超える場合は、複数のタスクに分割するか、データベース単位での同期を実行してください。
DTS は、以下のデータの型を同期しません:BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT。
DTS はプレフィックスインデックスを同期しません。ソースにプレフィックスインデックスが存在する場合、タスクが失敗する可能性があります。
DTS は、ソースクラスターから読み取り専用ノードおよび Object Storage Service (OSS) 外部テーブルを同期しません。
増分同期の要件
ソースクラスターでバイナリロギングを有効にし、loose_polar_log_bin パラメーターを on に設定する必要があります。 そうでない場合、事前チェックが失敗し、タスクを開始できません。 バイナリロギングを有効にする および パラメーターを変更する をご参照ください。
バイナリロギングを有効化すると、バイナリログの保存に伴うストレージ料金が発生します。
バイナリログの保持期間に関する要件:
| タスクタイプ | 最低保持期間 |
|---|---|
| 増分データ同期のみ | 24 時間 |
| 完全 + 増分データ同期 | 7 日間 |
バイナリログが所定の期間保持されていない場合、DTS がログを取得できず、タスクが失敗する可能性があります。これにより、データの不整合や損失が発生するおそれがあります。完全同期完了後は、保持期間を 24 時間以上に設定できます。
増分同期では、以下の DML 操作をサポートします:INSERT、UPDATE、DELETE。
DDL 操作の制約
| 操作 | 完全同期中 | 増分同期中 |
|---|---|---|
| ソーステーブルに対する DDL | 非対応 — タスクが失敗します | Data Management (DMS) のロックフリー DDL のみ対応(下記の注を参照) |
| pt-online-schema-change DDL | 非対応 — タスクが失敗します | 非対応 — タスクが失敗します |
| スキーマ同期 | 非対応 | 非対応 |
他のソースが同時にターゲットデータベースに書き込んでいない場合にのみ、Data Management (DMS) を使用して、データ同期中にソーステーブルに対してロックフリー DDL 操作を実行できます。 DMS オンライン DDL 文の実行中に、他のソースもターゲットデータベースに書き込んでいる場合、データ損失が発生する可能性があります。 詳細については、「ロックフリー DDL 操作の実行」をご参照ください。
運用上の制約
非ピーク時間帯に同期を実行してください。完全データ同期は、ソースおよび宛先データベースの読み取り・書き込みリソースを消費し、サーバー負荷を高めます。
完全データ同期完了後、宛先の表領域は、同時 INSERT 操作による断片化の影響で、ソースよりも大きくなります。
DTS タスクが失敗した場合、DTS サポートが 8 時間以内に復旧を試みます。復旧中はタスクが再起動される可能性があり、タスクパラメーター(データベースパラメーターではない)が変更される場合があります。
DTS は定期的に、ソースデータベース上で CREATE DATABASE IF NOT EXISTS test を実行し、バイナリログの位置を進めます。同期タスクの構成
ステップ 1:データ同期ページを開く
DTS コンソールまたは DMS コンソールのいずれかを使用します。
DTS コンソール
DMS コンソール
実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
ステップ 2:タスクの作成
タスクの作成 をクリックします。
ページ右上隅に 新規構成ページ ボタンが表示された場合は、それをクリックして新規構成ページに切り替えます。以前のバージョンに戻る が表示されている場合は、このステップをスキップします。
ステップ 3:ソースおよび宛先データベースの構成
以下のパラメーターを構成します。
| セクション | パラメーター | 値 |
|---|---|---|
| 該当なし | タスク名 | 説明的な名前を入力します。一意性は不要です。 |
| ソースデータベース | DMS データベースインスタンスの選択 | 既存の登録済みデータベースを選択するか、空白のままにして下記のフィールドを直接入力します。 |
| データベースタイプ | PolarDB for MySQL | |
| アクセス方法 | Alibaba Cloud インスタンス | |
| インスタンスリージョン | ソースの PolarDB for MySQL クラスターが配置されているリージョン。 | |
| Alibaba Cloud アカウント間でのデータ複製 | いいえ | |
| PolarDB クラスター ID | ソースクラスターの ID。 | |
| データベースアカウント | 必要な権限を持つデータベースアカウント。 | |
| データベースパスワード | アカウントのパスワード。 | |
| 暗号化 | セキュリティ要件に応じて構成します。詳細については、「SSL 暗号化の構成」をご参照ください。 | |
| 宛先データベース | DMS データベースインスタンスの選択 | 既存の登録済みデータベースを選択するか、空白のままにして下記のフィールドを直接入力します。 |
| データベースタイプ | PolarDB-X 1.0 | |
| アクセス方法 | Alibaba Cloud インスタンス | |
| インスタンスリージョン | 宛先の PolarDB-X 1.0 インスタンスが配置されているリージョン。 | |
| インスタンス ID | 宛先インスタンスの ID。 | |
| データベースアカウント | 必要な権限を持つデータベースアカウント。 | |
| データベースパスワード | アカウントのパスワード。 |
データベースを登録するには:
DMS コンソールで、[DMS データベースインスタンスの追加] をクリックします。詳細については、「Alibaba Cloud データベースインスタンスの登録」および「サードパーティのクラウドサービスでホストされているデータベースまたは自己管理データベースの登録」をご参照ください。
DTS コンソールでは、データベース接続 ページから登録します。詳細については、「データベース接続の管理」をご参照ください。
ステップ 4:接続性のテスト
接続性のテストと続行 をクリックします。
DTS は、そのサーバーの CIDR ブロックを自動的に Alibaba Cloud データベースインスタンスのホワイトリストおよび Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに追加します。データセンターまたはサードパーティクラウド上の自己管理データベースの場合、CIDR ブロックを手動で追加します。詳しくは、「DTS サーバーの CIDR ブロック」をご参照ください。
DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、セキュリティリスクが発生します。続行する前に、以下の予防措置を講じてください:アカウント認証情報を強化、公開ポートを最小限に制限、API 呼び出しの認証を実施、ホワイトリストおよびセキュリティグループルールの定期的な監査を実施。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway (SAG) を介して DTS をデータベースに接続することもできます。
ステップ 5:同期対象オブジェクトの構成
オブジェクトの構成 ステップで、以下のパラメーターを設定します。
同期タイプ
| タイプ | 機能 | 使用タイミング |
|---|---|---|
| 完全データ同期 | ソースから宛先へ既存の全データをコピーします。このデータは、その後の増分同期のベースラインとなります。 | データの履歴コピーから開始する場合に選択します。 |
| 増分データ同期 | ソースから宛先へ、継続的な変更(INSERT、UPDATE、DELETE)を適用します。デフォルトで選択されています。 | 完全同期後に宛先をソースと同期させる場合に選択します。 |
スキーマ同期は非対応であり、選択できません。
競合テーブルの処理モード
| モード | 動作 |
|---|---|
| 事前チェックとエラー報告 | 開始前に、送信先にソーステーブルと同名のテーブルが存在するかどうかをチェックします。重複が存在する場合、事前チェックは失敗し、タスクは開始されません。オブジェクト名マッピングを使用して、送信先のテーブルを削除または名前変更できない場合に、送信先テーブルの名前を変更します。 |
| エラーを無視して続行 | 重複テーブル名のチェックをスキップします。完全同期中は、宛先に既に存在する主キーまたは一意キー値と一致するレコードは保持されます(上書きされません)。増分同期中は、これらのレコードは上書きされます。スキーマが異なる場合、初期化が部分的に失敗する可能性があります。 |
エラーを無視して続行 はデータの不整合を引き起こす可能性があるため、慎重に使用してください。
宛先インスタンスにおけるオブジェクト名の大文字小文字
宛先でのデータベース名、テーブル名、および列名の大文字小文字の区別を制御します。デフォルトは [DTS デフォルトポリシー] です。「宛先インスタンスでのオブジェクト名の大文字小文字の区別を指定する」をご参照ください。
オブジェクトの選択
ソースオブジェクト セクションで、同期対象のテーブルを選択し、
をクリックして 選択済みオブジェクト に移動します。同期対象として選択できるのはテーブルのみです。
宛先でオブジェクト名を変更するには:
単一オブジェクト: [選択済みオブジェクト] でオブジェクトを右クリックします。 単一オブジェクトの名前をマップするをご参照ください。
複数のオブジェクトの場合: [一括編集] を [選択済みオブジェクト] の右上隅でクリックします。詳細については、「複数のオブジェクト名を一度にマップする」をご参照ください。
テーブル内の行をフィルターするには、選択済みオブジェクト 内のテーブルを右クリックし、フィルター条件を構成します。詳細については、「フィルター条件の設定」をご参照ください。
オブジェクト名マッピング機能を使用してオブジェクト名を変更すると、そのオブジェクトに依存する他のオブジェクトの同期が失敗する可能性があります。
ステップ 6:高度な設定の構成
次へ:高度な設定 をクリックし、以下の項目を構成します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング専用クラスター | デフォルトでは、タスクは共有クラスターで実行されます。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| 接続失敗時の再試行時間 | 接続失敗後の DTS の再試行時間です。範囲:10~1,440 分。デフォルト:720 分。最低でも 30 分以上に設定してください。複数のタスクが同じソースまたは宛先を共有する場合、最も短い再試行時間が適用されます。 |
| その他の問題発生時の再試行時間 | DDL または DML 操作失敗後の DTS の再試行時間です。範囲:1~1,440 分。デフォルト:10 分。最低でも 10 分以上に設定し、接続失敗時の再試行時間 より短く設定する必要があります。 |
| 完全データ移行時のスロットリングの有効化 | 完全同期中に、ソースへの QPS、RPS、および移行速度(MB/s)を制限し、宛先サーバーの負荷を軽減します。完全データ同期 が選択されている場合にのみ表示されます。 |
| 増分データ同期時のスロットリングの有効化 | 増分同期中に、RPS および同期速度(MB/s)を制限し、宛先サーバーの負荷を軽減します。 |
| 環境タグ | DTS インスタンスを識別するための任意のタグです。 |
| 転送および逆再生タスクのハートビートテーブルに対する SQL 操作の削除有無 | DTS がソースデータベースにハートビート SQL を書き込むかどうかを制御します。はいアラート通知設定 を選択すると、ハートビート SQL の書き込みが回避されます(遅延指標が表示される場合があります)。いいえ を選択すると、ハートビート SQL が書き込まれます(物理バックアップおよびクローン作成に影響を与える可能性があります)。 |
| ETL の構成 | ETL (抽出・変換・書き出し) 処理を有効にします。[はい] を選択すると、データ処理文を入力できます。「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 |
| モニタリングとアラート | タスクが失敗した場合、または同期遅延がしきい値を超えた場合に通知を送信します。[はい] を選択して、アラートのしきい値と連絡先を設定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 |
DTS が接続を再試行している間も、DTS インスタンスの課金は継続されます。ソースおよび宛先インスタンスの両方がリリースされた後は、速やかに DTS インスタンスをリリースしてください。
ステップ 7:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
このタスクの OpenAPI パラメーターをプレビューするには、ボタンにカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックしてから続行してください。
DTS は、タスク開始前に事前チェックを実行します。チェックに合格した場合のみタスクが開始されます。
いずれかの確認項目が失敗した場合は、失敗した項目の横にある 詳細の表示 をクリックし、問題を修正した後、再チェック をクリックします。
確認項目が無視可能なアラートをトリガーした場合は、アラート詳細の確認 > 無視 > OK をクリックし、その後 再チェック をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
成功率 が 100% に達するまで待機し、その後 次へ:インスタンスの購入 をクリックします。
ステップ 8:同期インスタンスの購入
購入 ページで、インスタンスを構成します。
| セクション | パラメーター | 説明 |
|---|---|---|
| 新規インスタンスクラス | 課金方法 | サブスクリプション:前払い方式。長期利用に適しており、コスト効率が優れています。契約期間:1~9 か月、または 1、2、3、5 年。従量課金:時間単位で課金されます。短期利用に適しています。不要になった時点でインスタンスをリリースすることで、課金を停止できます。 |
| インスタンスクラス | データ同期インスタンスのインスタンスクラス必要な同期速度に応じて選択します。詳細については、「」をご参照ください。 | |
| リソースグループ設定 | — | インスタンスのリソースグループ。デフォルト: [デフォルトリソースグループ]。詳細については、「Resource Management とは |
| サブスクリプション期間 | — | サブスクリプション課金方法の場合のみ利用可能です。 |
Data Transmission Service(従量課金)利用規約 を読み、同意した上で、購入して開始 をクリックします。確認ダイアログボックスで、OK をクリックします。
タスクがタスクリストに表示されます。そこで進捗状況を監視できます。