Data Transmission Service (DTS) を使用して、PolarDB-X 1.0 インスタンスから AnalyticDB for MySQL V3.0 クラスターへリアルタイムの増分データを同期します。DTS はまず完全データ同期を実行してベースラインを確立し、その後、増分変更を継続的に適用して、ターゲットクラスターを最新の状態に保ちます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ストレージタイプとして ApsaraDB RDS for MySQL(カスタムまたは購入済み)を指定した PolarDB-X 1.0 インスタンス。PolarDB for MySQL はサポートされていませんPolarDB-X 1.0
ソースインスタンス内のデータの合計サイズよりも大きな利用可能なストレージ容量を持つ AnalyticDB for MySQL V3.0 クラスター
PolarDB-X 1.0 にアタッチされた ApsaraDB RDS for MySQL インスタンスでバイナリログが有効化されており、
binlog_row_imageがfullに設定されていること。該当しない場合、事前チェックでエラーメッセージが返され、タスクを開始できません。バイナリログの保持期間は、完全同期および増分同期の場合には最低 7 日間、増分同期のみの場合には最低 24 時間が必要です。この要件を満たさない場合、DTS がバイナリログを取得できず、タスクが失敗する可能性があります。完全データ同期が完了した後は、保持期間を 24 時間以上に設定できます。必ずこの要件を満たすよう設定してください。満たさない場合、Data Transmission Service (DTS) のサービスレベルアグリーメント (SLA) で定義されたサービスの信頼性およびパフォーマンスを保証できません。同期対象のデータの文字セットが
utf8mb3でないこと。該当する場合、増分同期は失敗します。
設定手順については、「PolarDB-X 1.0 インスタンスの作成」「データベースの作成」「データベースアカウントの作成」をご参照ください。
制限事項
ソースデータベースの要件
| 制限事項 | 詳細 |
|---|---|
| テーブル制約 | テーブルには PRIMARY KEY 制約または一意制約 (UNIQUE constraint) が必要であり、すべてのフィールドが一意である必要があります。一意制約のみを持つテーブルではスキーマ同期はサポートされません。代わりに、PRIMARY KEY 制約を持つテーブルを使用してください。セカンダリインデックスを持つテーブルは同期できません。 |
| テーブル数の上限 | テーブル(データベース全体ではなく)を選択して同期対象とし、宛先でテーブル名またはカラム名を変更する必要がある場合、1 つのタスクで最大 5,000 個のテーブルをサポートします。この上限を超えるとリクエストエラーが発生します。複数のタスクに分割するか、データベース全体を同期してください。 |
| 分割方法 | PolarDB-X 1.0 では水平分割(データベースおよびテーブル単位)のみがサポートされています。垂直分割はサポートされていません。 |
| 読み取り専用インスタンス | PolarDB-X 1.0 のコンピュート層における読み取り専用インスタンスは、ソースとしてサポートされていません。 |
同期中の避けるべき操作
以下のソース側での操作により、タスクが失敗したり、データの不整合が発生したりする可能性があります。
ソースインスタンスまたはアタッチされた ApsaraDB RDS for MySQL インスタンスのスケーリング
ApsaraDB RDS for MySQL で構成された論理データベースまたはテーブルの物理データベースのディストリビューション変更
ホットテーブルの移行、シャードキーの変更、オンライン DDL 操作の実行
gh-ost または pt-online-schema-change を使用した DDL 操作の実行
PolarDB-X 1.0 インスタンスのネットワークタイプの変更 — 必須の場合には、その後で DTS タスクのネットワーク接続情報を更新してくださいPolarDB-X 1.0
データ書き込みに関する推奨事項
同期中は、データ書き込みを DTS 経由でのみ実行してください。他のツールを使用すると、Data Management (DMS) によるオンライン DDL 操作時にデータ損失が発生する可能性があります。
外部キーの動作
DTS はスキーマ同期中に外部キーを同期しません。完全データ同期および増分データ同期中、DTS はセッションレベルで外部キー制約チェックおよびカスケード操作を一時的に無効化します。この期間中にソースでカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。
パフォーマンスへの影響と実行タイミング
データ同期を開始する前に、ソースおよびターゲットデータベースのパフォーマンスへの影響を評価してください。非ピーク時間帯に同期を実行することを推奨します。初期完全同期中は、DTS がソースおよびターゲットデータベースの読み取りおよび書き込みリソースを使用するため、データベースサーバーの負荷が高まる可能性があります。
宛先テーブルスペースのサイズ
完全データ同期完了後、宛先テーブルスペースは、同時 INSERT 操作による断片化の影響でソースより大きくなります。
同期可能な SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
AnalyticDB for MySQL V3.0 クラスターへのデータ書き込み時に、UPDATE ステートメントは自動的に REPLACE INTO に変換されます。UPDATE ステートメントがプライマリキーを対象とする場合、DELETE の後に INSERT が実行されます。
サポートされる同期トポロジ
一方通行・一対一同期
一方通行・一対多同期
一方通行・カスケード同期
一方通行・多対一同期
詳細については、「同期トポロジー」をご参照ください。
必要なデータベースアカウント権限
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| ソース PolarDB-X 1.0 インスタンス | 同期対象オブジェクトに対する読み取り権限 | アカウントの管理 |
| 宛先 AnalyticDB for MySQL V3.0 クラスター | ターゲットデータベースに対する読み取りおよび書き込み権限 | データベースアカウントの作成 |
データ同期タスクの作成
DTS は、ソース PolarDB-X 1.0 インスタンスにアタッチされた各 ApsaraDB RDS for MySQL インスタンスに対してサブタスクを実行します。タスク開始後は、PolarDB-X 1.0タスクトポロジ で各サブタスクのステータスを監視してください。
ステップ 1:データ同期ページを開く
以下のいずれかの方法で「データ同期」ページにアクセスします。
DTS コンソール
DTS コンソール にログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
画面左上隅で、データ同期インスタンスが存在するリージョンを選択します。
DMS コンソール
手順は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソール にログインします。
上部のナビゲーションバーで、Data + AI にポインターを合わせ、DTS (DTS) > データ同期 を選択します。
データ同期タスク の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックします。
以下のパラメーターを構成します。
ソースデータベース
パラメーター 説明 タスク名 DTS タスクの名前。DTS が自動的に名前を生成します。タスクを容易に識別できるように、意味のある名前を指定してください。名前は一意である必要はありません。 データベースタイプ [PolarDB-X 1.0] を選択します。 アクセス方法 [Alibaba Cloud インスタンス] を選択します。 インスタンスリージョン ソース PolarDB-X 1.0 インスタンスが存在するリージョン。 Alibaba Cloud アカウント間でのデータ複製 ソースおよび宛先が同一の Alibaba Cloud アカウント下にある場合は、[いいえ] を選択します。 インスタンス ID ソース PolarDB-X 1.0 インスタンスの ID。 データベースアカウント ソースインスタンスのデータベースアカウント。必要な権限については、「必要なデータベースアカウント権限」をご参照ください。 データベースパスワード データベースアカウントのパスワード。 宛先データベース
パラメーター 説明 データベースタイプ [AnalyticDB for MySQL 3.0] を選択します。 アクセス方法 [Alibaba Cloud インスタンス] を選択します。 インスタンスリージョン 宛先 AnalyticDB for MySQL V3.0 クラスターが存在するリージョン。 インスタンス ID 宛先 AnalyticDB for MySQL V3.0 クラスターの ID。 データベースアカウント 宛先クラスターのデータベースアカウント。必要な権限については、「必要なデータベースアカウント権限」をご参照ください。 データベースパスワード データベースアカウントのパスワード。 接続テストと続行 をクリックします。
DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックをセキュリティ設定に追加する」をご参照ください。
ステップ 3:同期対象オブジェクトの構成
オブジェクトの構成 ステップで、以下のパラメーターを構成します。
パラメーター 説明 同期タイプ デフォルトでは、増分データ同期 が選択されています。また、スキーマ同期 および 全量データ同期 も選択してください。事前チェック後に、DTS はソースから宛先へ既存データを同期し、増分同期のベースラインとして使用します。全量データ同期 を選択した場合、DTS は CREATE TABLE で作成されたテーブルのスキーマおよびデータも同期します。 同期対象の DDL および DML 操作 同期する SQL 操作を指定します。サポートされる操作については、「同期可能な SQL 操作」をご参照ください。特定のテーブルに対して操作を個別に選択するには、選択済みオブジェクト 内の該当オブジェクトを右クリックし、同期対象の操作を選択します。 テーブルのマージ はいアラート通知設定:同一のスキーマを持つ複数のソーステーブルを、単一の宛先テーブルにマージします。パフォーマンス向上のため OLTP でシャーディングが実装されており、オンライン分析処理(OLAP)クエリ向けにデータを統合したい場合に有効です。詳細については、「マルチテーブルマージ機能の有効化」をご参照ください。有効化時:オブジェクト名マッピング機能(「データベース・テーブル・列名のマッピング」をご参照)を用いて、選択済みのソーステーブル名を宛先テーブル名に変更し、DTS は宛先テーブルに __dts_data_source列(TEXT 型)を追加して各レコードの出所を追跡します。この列の値は<sync instance ID>:<source database>:<source schema>:<source table>の形式で、例:dts********:dtstestdata:testschema:customer1となります。選択済みのすべてのソーステーブルがマージされます。マージ対象外のテーブルがある場合は、別途タスクを作成してください。警告テーブルのマージを有効化している間は、ソースデータベースまたはソーステーブルに対して DDL スキーマ変更を実行しないでください。いいえ(デフォルト):テーブルをマージしません。
競合テーブルの処理モード 事前チェック後にエラーを報告(デフォルト):宛先にソーステーブルと同名のテーブルが存在する場合、事前チェックは失敗します。続行前に、オブジェクト名マッピング機能を用いて競合するテーブル名を変更してください。エラーを無視して続行:名前の競合チェックをスキップします。 警告この設定により、データの不整合が発生する可能性があります。全量同期中は、宛先に存在する主キーまたは一意キーと一致するレコードが保持され(ソース側のレコードはスキップされます)。増分同期中は、宛先の一致するレコードが上書きされます。スキーマが異なる場合、タスクが失敗するか、一部の列のみが同期されることがあります。
宛先インスタンスにおけるオブジェクト名の大文字小文字設定 宛先におけるデータベース名、テーブル名、列名の大文字小文字の取り扱いポリシーです。デフォルト: DTS デフォルトポリシー宛先インスタンスのオブジェクト名の大文字/小文字の指定。詳細については、「」をご参照ください。 ソースオブジェクト オブジェクトを選択し、
アイコンをクリックして 選択済みオブジェクト に追加します。同期対象としてテーブルを選択できます。データベース全体を選択した場合、DTS は CREATE TABLE および DROP TABLE の変更を同期しません。選択済みオブジェクト データベース、テーブル、カラム名の個別マッピング単一オブジェクトの宛先名を変更するには、該当オブジェクトを右クリックし、「」の手順に従ってください。複数オブジェクトを一度に名前変更するには、右上隅の 一括編集データベース、テーブル、および列名のバッチマッピング をクリックします(「」をご参照ください)。WHERE 条件による行フィルターを適用するには、オブジェクトを右クリックして条件を指定してください(「フィルター条件の指定」をご参照ください)。 次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
パラメーター 説明 タスクスケジューリング用の専用クラスター デフォルトでは、DTS は共有クラスターを使用します。タスクの安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 接続失敗時の再試行時間 ソースまたは宛先データベースが到達不能になった場合の DTS の再試行時間。有効値:10~1,440 分。デフォルト:720 分。30 分を超える値を設定してください。この時間内に DTS が再接続できた場合、タスクは再開されます。同じソースまたは宛先を共有するタスクの中で最も短い再試行時間が設定されている場合、その値が優先されます。再試行期間中も DTS の課金は継続されます。 その他の問題発生時の再試行時間 DDL または DML 操作が失敗した場合の DTS の再試行時間。有効値:1~1,440 分。デフォルト:10 分。10 分を超える値を設定してください。この値は、[接続失敗時の再試行時間] よりも小さくする必要があります。 完全データ同期のレート制御の有効化 完全データ同期中のソースおよび宛先への読み取り/書き込み負荷を制限します。ソースデータベースへのクエリ毎秒数 (QPS)、完全データ移行の RPS、完全移行のデータ移行速度 (MB/s) を構成します。完全データ同期 が選択されている場合にのみ利用可能です。 増分データ同期のレート制御の有効化 増分同期中の宛先への負荷を制限します。増分データ同期の RPS および 増分同期のデータ同期速度 (MB/s) を構成します。 環境タグ DTS インスタンスを環境(例:本番環境またはステージング環境)で分類するための任意のタグ。 ETL の構成 データ同期中にデータを処理するために、ETL (抽出・変換・書き出し) を有効にするかどうか。はい:コードエディタにデータ処理文を入力します(「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください)。いいえ(デフォルト):ETL 構成をスキップします。ETL の概要については、「ETL とは? モニタリングとアラート タスクが失敗した場合、または同期遅延がしきい値を超えた場合にアラートを送信するかどうか。[いいえ](デフォルト)。[はい]:アラートのしきい値と通知設定を設定します(「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください)。 (任意)次へ:データベースおよびテーブルフィールドの構成 をクリックして、宛先データベース内のテーブルについて、タイプ、プライマリキー列、ディストリビューションキー、パーティションキー、パーティショニングルール、パーティションライフサイクル を構成します。
このステップは、同期タイプ で [スキーマ同期] が選択されている場合にのみ利用可能です。これらの設定を変更するには、定義ステータス を [すべて] に設定してください。複合プライマリキーの場合、ディストリビューションキー および パーティションキー として 1 つ以上のカラムを指定してください。詳細については、「」をご参照ください。
ステップ 4:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
このタスク構成の API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックしてから続行してください。
事前チェックが完了するまで待ちます。DTS が事前チェックに合格した後でなければ、タスクを開始できません。
項目が失敗した場合、詳細の表示 をクリックして原因を確認し、問題を解決した後、再チェック をクリックしてください。
項目がアラートをトリガーした場合:
アラートを無視できない場合は、根本的な問題を解決してから事前チェックを再実行してください。
安全に無視できるアラートの場合は、アラート詳細の確認 をクリックし、詳細の表示 ダイアログで 無視 をクリックし、OK で確認した後、再チェック をクリックしてください。
アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 5:インスタンスの購入および開始
成功率 が 100% に達するまで待ち、その後 次へ:インスタンスの購入 をクリックします。
購入ページで、以下のパラメーターを構成します。
パラメーター 説明 課金方法 サブスクリプション]:固定期間の前払い方式。長期利用に適しています。[従量課金]:時間単位で課金されます。短期利用に適しています。不要になったらインスタンスを解放して、課金を停止してください。 リソースグループ設定 インスタンスのリソースグループ。デフォルト:[デフォルトリソースグループ]。詳細については、「Resource Management とは インスタンスクラス インスタンスクラスは同期速度を決定します。データ量およびレイテンシ要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 サブスクリプション期間 [サブスクリプション] 課金の場合にのみ利用可能です。選択肢:1~9 か月、1 年、2 年、3 年、5 年。 Data Transmission Service(従量課金)利用規約 を読み、同意してください。
購入および開始 をクリックし、確認ダイアログで OK をクリックします。
タスクがタスク一覧に表示されます。DTS は、ソース PolarDB-X 1.0 インスタンスにアタッチされた各 ApsaraDB RDS for MySQL インスタンスに対してサブタスクを実行します。各サブタスクのステータスは、タスクトポロジ で監視してください。PolarDB-X 1.0