Data Transmission Service (DTS) を使用すると、PolarDB-X 2.0 インスタンスから PolarDB-X 1.0 インスタンスへデータを同期できます。完全同期および増分同期の両方をサポートしています。
この機能はベータ版であり、一部のユーザーのみが利用可能です。
このトピックでは、以下の内容について説明します。
開始前に前提条件および制限事項を確認する
データベースアカウントに必要な権限を付与する
DTS 同期タスクを構成する
事前チェックを実行し、同期インスタンスを購入する
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
宛先となる PolarDB-X 1.0 インスタンスのストレージ容量が、ソースとなる PolarDB-X 2.0 インスタンスから同期するデータ量より大きいこと。「PolarDB-X 1.0 インスタンスの作成」をご参照ください。
同期対象のデータを受信するため、宛先インスタンスにデータベースおよびテーブルが作成済みであること。「データベースの作成データベースの作成」および「基本的な SQL 操作の実行」をご参照ください。
宛先インスタンスのデータベースおよびテーブル名を、ソースとなる PolarDB-X 2.0 インスタンスの名前と一致させる必要があります。名前が異なる場合は、タスク構成時に「選択したオブジェクト」ボックス内のオブジェクト名マッピング機能を使用して、宛先側のオブジェクト名を変更してください(「オブジェクトの構成」ページ)。
課金
| 同期タイプ | 料金 |
|---|---|
| 完全データ同期 | 無料 |
| 増分データ同期 | 課金概要有料です。「」をご参照ください。 |
制限事項
ソースデータベースの制限
帯域幅:ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、同期速度が低下します。
読み取り専用インスタンス:Enterprise Edition の PolarDB-X 2.0 の読み取り専用インスタンスは、ソースとして使用できません。
テーブル名に関する制限:
テーブル名に大文字を含むものは同期できません。
予約語(例:
select)をテーブル名として使用しているものは同期できません。TABLEGROUPオブジェクト、およびLocality属性を含むデータベースまたはスキーマはサポートされていません。
プライマリキーの必須要件:テーブルには、
PRIMARY KEYまたはすべてのフィールドが一意であるUNIQUE制約が必要です。これを満たさない場合、宛先データベースに重複レコードが発生する可能性があります。テーブル数の上限:同期対象としてテーブルを選択し、宛先でテーブル名またはカラム名の変更を行う必要がある場合、1 つのタスクで最大 5,000 個のテーブルをサポートします。この上限を超えると、リクエストエラーが返されます。タスクを分割するか、データベース単位での同期を実行してください。
Binlog 設定:PolarDB-X 2.0 では、バイナリログ記録がデフォルトで有効になっています。
binlog_row_imageパラメーターをfullに設定します。このパラメーターがfullに設定されていない場合、事前チェックに失敗し、タスクを開始できません。詳細については、「パラメーター設定」をご参照ください。完全同期中の DDL 操作:完全データ同期中に、データベースまたはテーブルのスキーマを変更する DDL 操作を実行しないでください。DDL 操作により、タスクが失敗する可能性があります。
完全データ同期中、DTS はソースデータベースに対してクエリを実行します。これによりメタデータロックが発生し、ソースデータベースにおける DDL 操作がブロックされる場合があります。
ネットワーク構成の変更:PolarDB-X 2.0 インスタンスのネットワーク構成が変更された場合、同期インスタンスで一時的な遅延が発生する可能性があります。
その他の制限
ハートビート遅延:DTS は、ハートビートデータの書き込みおよび Binlog オフセットの進捗を確保するために、定期的にソースデータベース上で
CREATE DATABASE IF NOT EXISTS \`test\`を実行します。転送および逆再生タスクのハートビートテーブルに対する SQL 操作の削除の有無 オプションを はいアラート通知設定 に設定した場合(または同期インスタンスが使用するデータベースアカウントにデータベース作成権限がない場合)、かつソースデータベースで長期間 DML 操作が実行されない場合、表示される遅延値が不正確になることがあります。遅延値を更新するには、ソースデータベース上で DML 操作を実行してください。
完全同期中のデータベース負荷:完全データ同期は、ソースおよび宛先の両方のデータベースにおいて、読み取りおよび書き込みリソースを消費します。開始前にデータベースパフォーマンスを評価し、CPU 負荷が両方のデータベースで 30% 未満となる非ピーク時間帯に同期を実行してください。
ストレージの断片化:完全初期化中、DTS は並列 INSERT 操作を実行するため、宛先データベースのテーブルで断片化が発生する可能性があります。完全初期化完了後、宛先テーブルが使用するストレージ領域は、ソーステーブルよりも大きくなります。
外部からの書き込み:同期インスタンスが実行中の状態で、DTS 以外のソースから宛先データベースへデータが書き込まれると、ソースと宛先のデータベース間でデータの不整合が発生し、同期インスタンスが失敗する可能性があります。
インスタンスの回復:インスタンスが障害を起こした場合、DTS ヘルプデスクが 8 時間以内に回復を試みます。回復には、インスタンスの再起動やパラメーターの調整が含まれる場合があります。
回復中に変更されるのは DTS インスタンスパラメーターのみです。データベースパラメーターは変更されません。詳細については、「インスタンスパラメーターの変更」をご参照ください。
増分同期でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | CREATE TABLE、RENAME TABLE、ALTER TABLE、TRUNCATE TABLE、DROP TABLE、CREATE INDEX、DROP INDEX |
DDL 同期に関する注意事項:
単一テーブルに対する CREATE TABLE 操作のみがサポートされています。シャード化されたデータベースおよびテーブルに対する CREATE TABLE はサポートされていません。
ソースが Enterprise Edition の PolarDB-X 2.0 インスタンスの場合、CREATE INDEX 操作は同期できません。
RENAME TABLE はデータの不整合を引き起こす可能性があります。同期対象としてテーブルを選択し、同期中にそのテーブル名を変更した場合、当該テーブルのデータは宛先への同期が停止します。これを防ぐには、テーブルを含むデータベースを同期対象リストに追加し、変更前のデータベース名および変更後のデータベース名の両方を含めてください。
データベースアカウントに必要な権限
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| ソース PolarDB-X 2.0 インスタンス | REPLICATION SLAVE、REPLICATION CLIENT、および同期対象オブジェクトに対する SELECT 権限 | データベースアカウントの管理 および データ同期中のアカウント権限に関する問題 |
| 宛先 PolarDB-X 1.0 インスタンス | 読み取りおよび書き込み権限 | データベースアカウントの管理 |
同期タスクの作成
ステップ 1:データ同期ページへ移動
以下のいずれかの方法で、データ同期 ページを開きます。
DTS コンソール
DMS コンソール
以下の手順は、お使いの DMS コンソールのモードおよびレイアウトに基づいて異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックして、タスク構成ページを開きます。
以下のパラメーターを使用して、ソースおよび宛先データベースを構成します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に名前を生成しますが、タスクを容易に識別できるよう、意味のある名前を指定することを推奨します。名前は一意である必要はありません。 |
| 既存の接続を選択 | DTS に登録済みのデータベースインスタンスがある場合は、ドロップダウンリストから選択してください。DTS が自動的に接続パラメーターを入力します。登録済みのインスタンスを使用しない場合は、接続情報を手動で入力してください。DMS コンソールでは、DMS データベースインスタンスの選択 ドロップダウンリストから選択します。 |
| データベースタイプ | PolarDB-X 2.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 2.0 インスタンスが存在するリージョンを選択します。 |
| Alibaba Cloud アカウント間でのデータ複製 | 現在の Alibaba Cloud アカウント内のインスタンスを使用する場合は、いいえ を選択します。 |
| インスタンス ID | ソース PolarDB-X 2.0 インスタンスの ID を選択します。 |
| データベースアカウント | ソースインスタンスのデータベースアカウントを入力します。権限要件については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードを入力します。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | DTS に登録済みのデータベースインスタンスがある場合は、ドロップダウンリストから選択してください。DTS が自動的に接続パラメーターを入力します。登録済みのインスタンスを使用しない場合は、接続情報を手動で入力してください。DMS コンソールでは、DMS データベースインスタンスの選択 ドロップダウンリストから選択します。 |
| データベースタイプ | PolarDB-X 1.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | 宛先 PolarDB-X 1.0 インスタンスが存在するリージョンを選択します。 |
| インスタンス ID | 宛先 PolarDB-X 1.0 インスタンスの ID を選択します。 |
| データベースアカウント | 宛先インスタンスのデータベースアカウントを入力します。権限要件については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードを入力します。 |
接続テストを実行して次へ進む をクリックします。
DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。
ステップ 3:同期対象の構成
「オブジェクトの構成」ページで、以下の設定を構成します。
| パラメーター | 説明 |
|---|---|
| 同期タイプ | 増分データ同期 がデフォルトで選択されています。既存データも同期する場合は、完全データ同期 を追加してください。スキーマ同期 は、このソース・宛先の組み合わせでは利用できません。完全データ同期を有効にすると、DTS はソースから宛先へ既存データをコピーし、その後の増分同期のベースラインとして使用します。 |
| 増分 CDC タイプ | PolarDB-X 2.0 インスタンスのログエンジンに基づいて、Change Data Capture (CDC) タイプを選択します。マルチストリーム CDC を選択する場合は、ソースインスタンスでマルチストリームが有効化されている必要があります。 |
| 競合テーブルの処理モード | 事前チェックを行い、エラーを報告オブジェクト名のマップ(デフォルト):DTS は、宛先データベースにソースと同じ名前のテーブルが存在するかどうかをチェックします。重複する名前が存在する場合、事前チェックが失敗し、タスクを開始できません。タスクの実行を妨げずに重複名を処理するには、オブジェクト名マッピング機能を使用して宛先テーブルの名前を変更してください。「」をご参照ください。エラーを無視して続行:重複名のチェックをスキップします。完全データ同期中、宛先に既に存在するレコードは、ソースレコードとプライマリキーまたは一意キーの値が一致する場合に保持されます。増分データ同期中、ソースレコードは一致する宛先レコードを上書きします。ソースと宛先のスキーマが異なる場合、初期化が失敗したり、一部のカラムのみが同期されたりする可能性があります。 |
| ソースオブジェクト | 1 つ以上のオブジェクトを選択し、右向き矢印アイコンをクリックして、選択したオブジェクト に追加します。同期対象として、データベースまたはテーブルを選択します。 |
| 選択したオブジェクト | 同期オブジェクトの名前を変更する、または別の送信先オブジェクトにマップするには、そのオブジェクトを右クリックして、オブジェクト名マッピングを設定します。詳細については、「オブジェクト名マッピング」をご参照ください。オブジェクトを削除するには、そのオブジェクトをクリックし、次に削除アイコンをクリックします。行をフィルターするには、テーブルを右クリックして、WHERE 条件を指定します。詳細については、「フィルター条件の指定」をご参照ください。増分で同期する SQL 操作を選択するには、オブジェクトを右クリックして、操作を選択します。 |
同期オブジェクトの名前を変更すると、それらに依存する他のオブジェクトの同期が失敗する可能性があります。
ステップ 4:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用専用クラスター | DTS 専用クラスターとはデフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性が必要な場合は、専用クラスターをご購入ください。詳細については、「」をご参照ください。 |
| 接続失敗時のリトライ時間 | DTS がタスク失敗前に接続失敗をリトライする時間を指定します。有効値:10~1440 分。デフォルト値:720。30 を超える値を設定することを推奨します。指定された時間内に DTS が再接続できれば、タスクは再開されます。それ以外の場合は、タスクは失敗します。複数のタスクが同一のソースデータベースまたはターゲットデータベースを共有している場合、最も短いリトライ時間がすべてのタスクに適用されます。 |
| その他の問題発生時のリトライ時間 | DTS が DDL または DML 操作の失敗をリトライし、その後タスクを失敗させるまでの時間を指定します。有効値:1~1440 分。デフォルト値:10。10 を超える値を設定することを推奨します。この値は、接続失敗時のリトライ時間の値よりも小さくする必要があります。 |
| 完全データ同期時のスロットリングを有効化 | 完全データ同期中のリソース使用量を制限します。ソースデータベースへのクエリ数 (QPS)、完全データ移行の RPS、および完全移行時のデータ移行速度 (MB/s) を設定して、ターゲットデータベースへの負荷を軽減できます。このオプションは、完全データ同期が選択されている場合のみ利用可能です。 |
| 増分データ同期時のスロットリングを有効化 | 増分データ同期中のリソース使用量を制限します。増分データ同期の RPS および 増分同期時のデータ同期速度 (MB/s) を設定できます。 |
| フォワードおよびリバースタスクのハートビートテーブルに対する SQL 操作を削除するかどうか | DTS がソースデータベースにハートビート SQL 操作を書き込むかどうかを制御します。[はい]:DTS はハートビート操作を書き込みません。レイテンシー情報が高めに表示される可能性があります。[いいえ]:DTS はハートビート操作を書き込みます。これにより、物理バックアップやデータベースクローンなどの機能に影響を与える可能性があります。 |
| 環境タグ | (オプション)インスタンスの環境を識別するためにタグを割り当てます。 |
| モニタリングとアラート | [いいえ]:アラート機能が無効になります。[はい]DTS タスク作成時のモニタリングとアラートの設定:アラート機能を有効にします。アラートのしきい値と通知設定を指定してください。詳細については、「」をご参照ください。 |
DTS が接続をリトライする場合、リトライ期間中も同期インスタンスの課金が継続されます。ソースおよび宛先インスタンスが不要になった場合は、速やかにインスタンスを解放してください。
ステップ 5:データ検証の構成
「[データ検証へ進む]」をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 6:事前チェックの実行およびタスクの保存
次へ:タスク設定の保存および事前チェック をクリックします。
このタスクをプログラムで構成するための API パラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック の上にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
DTS は、タスクを開始する前に事前チェックを実行します。いずれかの項目が失敗した場合:
失敗した項目の横にある 詳細の表示 をクリックします。
チェック結果に基づいて問題を修正します。
再チェック をクリックします。
アラートがトリガーされた場合:
無視できないアラートの場合は、詳細の表示 をクリックし、問題を修正してから再チェックを実行してください。
無視可能なアラートの場合は、アラート詳細の確認 をクリックし、ダイアログボックスで 無視 をクリックし、OK をクリックした後、再チェック をクリックします。
アラート項目を無視すると、データの不整合が発生し、ビジネスに潜在的なリスクを及ぼす可能性があります。
ステップ 7:同期インスタンスの購入
成功率 が 100% に達したら、次へ:インスタンスの購入 をクリックします。
購入ページで、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:所定の期間に対して前払い方式で課金されます。長期利用に適しています。従量課金:時間単位で課金されます。短期利用に適しています。ご利用が不要になった時点でインスタンスをリリースすることで、課金を停止できます。 |
| リソースグループ設定項目 | 同期インスタンスが属するリソースグループです。デフォルト値: デフォルトリソースグループResource Management とは |
| インスタンスクラス | データ同期インスタンスのインスタンスクラス必要な同期速度に応じてインスタンスクラスを選択します。詳細については、「」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション を選択した場合に利用可能です。選択肢:1~9 ヶ月、1 年、2 年、3 年、または 5 年です。 |
Data Transmission Service(従量課金)サービス利用規約 を読み、同意します。
購入して開始 をクリックし、ダイアログボックスで OK をクリックします。
タスクはタスク一覧に表示されます。そこから進行状況を監視できます。
次のステップ
同期タスクが開始された後:
タスクのステータスを監視:遅延の急増やエラーがないか、タスク一覧を定期的に確認します。
データ整合性の検証: 完全な初期化が完了したら、送信先データがソースと一致することを検証してください。詳細については、「データ検証タスクを設定する」をご参照ください。
宛先への外部からの書き込みを避ける:同期中に宛先データベースへ DTS 以外のソースから書き込みを行うと、データの不整合やタスクの失敗を引き起こす可能性があります。