Data Transmission Service (DTS) を使用して、PolarDB-X 1.0 インスタンスから ApsaraDB RDS for MySQL インスタンスに増分データをリアルタイムで継続的に同期します。このガイドでは、前提条件、制限事項、必要な権限、および完全な設定手順について説明します。
このガイドでは、次の内容について説明します。
開始前の前提条件と制限事項の確認
同期タスクの作成とソースデータベースおよびターゲットデータベースの設定
オブジェクトの選択、詳細オプションの設定、事前チェックの実行
同期インスタンスの購入とタスクの開始
前提条件
開始する前に、以下を確認してください。
ストレージタイプとして ApsaraDB RDS for MySQL を使用する PolarDB-X 1.0 インスタンス (カスタムインスタンスと購入済みインスタンスの両方がサポートされます。ストレージタイプとして PolarDB for MySQL は使用できません)。 詳細については、「PolarDB-X 1.0 インスタンスの作成」および「データベースの作成データベースの作成」をご参照ください。
ターゲットの ApsaraDB RDS for MySQL インスタンス。 詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
ご利用の PolarDB-X 1.0 インスタンスにアタッチされている ApsaraDB RDS for MySQL インスタンスでバイナリログが設定されていること:PolarDB-X 1.0
バイナリログが有効で、
binlog_row_imageがfullに設定されていること増分同期のみの場合は 24 時間以上、フルデータ同期 + 増分同期の場合は 7 日以上のバイナリログ保持期間
制限事項
タスクを設定する前に、これらの制限事項を確認してください。
ソースデータベースの要件:
テーブルには、すべてのフィールドが一意である主キー制約または一意制約が必要です。一意制約のみを持つテーブルはスキーマ同期をサポートしていません。主キー制約を持つテーブルを使用してください。セカンダリインデックスを持つテーブルは同期できません。
オブジェクト名の編集 (テーブル名や列名の変更など) を伴う 5,000 を超えるテーブルを同期すると、リクエストエラーが発生します。作業を複数のタスクに分割するか、代わりにデータベース全体を同期してください。
PolarDB-X 1.0 は、ストレージリソースの水平分割のみをサポートします。垂直分割はサポートされていません。PolarDB-X 1.0
PolarDB-X 1.0 のコンピューティングレイヤーにある読み取り専用インスタンスはサポートされていません。PolarDB-X 1.0
同期中の制限操作:
PolarDB-X 1.0 インスタンスのネットワークタイプを変更しないでください。変更する必要がある場合は、変更後すぐに同期タスクのネットワーク接続情報を更新してください。PolarDB-X 1.0
ソースインスタンスやアタッチされている ApsaraDB RDS for MySQL インスタンスのスケーリング、物理データベースのディストリビューションの変更、ホットテーブルの移行、シャードキーの変更、オンライン DDL 操作を実行しないでください。これらの操作は、タスクの失敗やデータの不整合を引き起こす原因となります。
一般的な制限事項:
DTS は、PolarDB-X 1.0 ソースにアタッチされた各 ApsaraDB RDS for MySQL インスタンスに対してサブタスクを作成します。サブタスクのステータスは [タスクのトポロジ] で監視してください。
スキーマ同期中、DTS は外部キーをターゲットに同期します。フルデータ同期および増分同期中、DTS はセッションレベルで外部キー制約チェックとカスケード操作を一時的に無効にします。この間にソースでカスケード更新および削除操作を実行すると、データの不整合が発生する可能性があります。
同期対象のオブジェクトに対して gh-ost または pt-online-schema-change を使用して DDL を実行しないでください。
同期中は、DTS を通じてのみターゲットデータベースにデータを書き込んでください。DMS のオンライン DDL 操作を含め、DTS と並行して他のツールを使用してターゲットに書き込むと、データ損失が発生する可能性があります。
フルデータ同期が完了すると、同時 INSERT 操作による断片化のため、ターゲットの表領域はソースよりも大きくなります。
課金
| 同期タイプ | 費用 |
|---|---|
| スキーマ同期とフルデータ同期 | 無料 |
| 増分データ同期 | 課金済み。「課金概要」を参照してください。 |
サポートされる同期トポロジ
一方向 1 対 1
一方向 1 対多
一方向カスケード
一方向多対 1
詳細については、「同期トポロジ」をご参照ください。
同期可能な SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
必要な権限
| データベース | 必要な権限 |
|---|---|
| ソース PolarDB-X 1.0 インスタンス | 同期対象オブジェクトに対する読み取り権限。詳細については、「アカウントの管理」をご参照ください。 |
| ターゲット ApsaraDB RDS for MySQL インスタンス | ターゲットオブジェクトに対する読み取り/書き込み権限。詳細については、「アカウントの作成」および「アカウント権限の変更」をご参照ください。 |
同期タスクの作成
データを同期する前に、データ同期がソースデータベースとターゲットデータベースのパフォーマンスに与える影響を評価してください。タスクはオフピーク時間にスケジュールすることを推奨します。初回のフルデータ同期では、ソースとターゲット両方のデータベースの読み取り/書き込みリソースが使用されるため、データベースサーバーの負荷が増加します。
ステップ 1: データ同期タスクページへの移動
Data Management (DMS) コンソールにログインします。
上部のナビゲーションバーで、[データ + AI] をクリックします。
左側のナビゲーションウィンドウで、[DTS (DTS)] > [データ同期] を選択します。
コンソールのナビゲーションは、モードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」または「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。あるいは、新しい DTS コンソールの「データ同期タスクページ」に直接移動します。
ステップ 2: リージョンの選択
[データ同期タスク] の右側で、同期インスタンスが存在するリージョンを選択します。
新しい DTS コンソールでは、上部のナビゲーションバーでリージョンを選択します。
ステップ 3: ソースデータベースとターゲットデータベースの設定
[タスクの作成] をクリックします。データ同期タスクの作成ウィザードで、次のパラメーターを設定します。
ソースデータベースとターゲットデータベースを設定した後、次に進む前にページに表示される [使用制限] をお読みください。
ソースデータベース
| パラメーター | 値 |
|---|---|
| タスク名 | タスクを説明する名前。DTS は自動的に名前を生成しますが、タスクを識別しやすくするために名前を変更してください。タスク名は一意である必要はありません。 |
| データベースタイプ | [PolarDB-X 1.0] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 1.0 インスタンスのリージョン。 |
| インスタンス ID | ソース PolarDB-X 1.0 インスタンスの ID。 |
| データベースアカウント | ソースインスタンスのデータベースアカウント。詳細については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
宛先データベース
| パラメーター | 値 |
|---|---|
| データベースタイプ | [MySQL] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ターゲット ApsaraDB RDS for MySQL インスタンスのリージョン。 |
| RDS インスタンス ID | ターゲット ApsaraDB RDS for MySQL インスタンスの ID。 |
| データベースアカウント | ターゲットインスタンスのデータベースアカウント。詳細については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
| 暗号化 | [非暗号化] または [SSL 暗号化] を選択します。 SSL 暗号化を使用するには、まず ApsaraDB RDS for MySQL インスタンスで有効にする必要があります。 「クラウド証明書を使用して SSL 暗号化を有効にする」をご参照ください。 |
ステップ 4: 接続性のテスト
[接続テストと次へ] をクリックします。
DTS は、サーバーの CIDR ブロックを自動的に Alibaba Cloud のデータベースインスタンス(例:ApsaraDB RDS for MySQL や ApsaraDB for MongoDB)のホワイトリストに追加します。Elastic Compute Service (ECS) インスタンス上で実行される自己管理データベースの場合、DTS はその CIDR ブロックを自動的に ECS セキュリティグループルールに追加します — ECS インスタンスがデータベースにアクセスできることを確認してください。複数の ECS インスタンスにまたがってデプロイされたデータベースの場合、各インスタンスのセキュリティグループルールに CIDR ブロックを手動で追加してください。オンプレミスデータベースまたは第三者クラウドプロバイダーのデータベースの場合、データベースのホワイトリストに CIDR ブロックを手動で追加してください。詳細については、「DTS サーバーの CIDR ブロック」をご参照ください。
DTS サーバーの CIDR ブロックをホワイトリストやセキュリティグループに追加すると、セキュリティリスクが伴います。DTS を使用する前に、強力な認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストとセキュリティグループルールの定期的な監査、不正な CIDR ブロックの削除などの予防措置を講じてください。より高いセキュリティを確保するには、Express Connect、VPN Gateway、または Smart Access Gateway を使用してデータベースを DTS に接続してください。
ステップ 5: オブジェクトの選択と同期設定
| パラメーター | 説明 |
|---|---|
| 同期タイプ | 増分データ同期がデフォルトで選択されています。また、[スキーマ同期]と完全データ同期も選択してください。DTS は、まず既存データを同期して、増分同期のベースラインを確立します。 |
| 競合するテーブルの処理モード | [事前チェックしてエラーを報告](デフォルト): ソースと送信先に同じ名前のテーブルがある場合、事前チェックは失敗します。続行する前に競合を解決してください。送信先のテーブルを削除または名前変更できない場合は、オブジェクト名マッピングを使用して送信先テーブルの名前を変更します。[エラーを無視して続行]: 名前の競合に関する事前チェックをスキップします。フル同期中は、主キーまたは一意キーの値が一致する場合、送信先の既存レコードは保持されます。増分同期中は、既存レコードが上書きされます。スキーマが異なる場合、初期化が部分的に失敗する可能性があります。このオプションは慎重に使用してください。 |
| ターゲットインスタンスでのオブジェクト名の大文字/小文字の区別 | ターゲットのデータベース名、テーブル名、列名の大文字/小文字の区別を制御します。デフォルトは [DTS のデフォルトポリシー]宛先インスタンスにおけるオブジェクト名の大文字小文字の指定 です。詳細については、「」をご参照ください。 |
| ソースオブジェクト | オブジェクトを選択し、矢印アイコンをクリックして [選択したオブジェクト] に移動します。同期するオブジェクトとしてテーブルを選択します。データベース全体を選択した場合、DTS はテーブルの作成や削除の変更を同期しません。 |
| 選択したオブジェクト | 単一のオブジェクトの名前を変更するには、そのオブジェクトを右クリックします。複数のオブジェクトの名前を変更するには、[バッチ編集] をクリックします。詳細については、「オブジェクト名のマッピング」をご参照ください。WHERE 条件を使用してデータをフィルターするには、オブジェクトを右クリックして条件を指定します。詳細については、「フィルター条件の指定」をご参照ください。オブジェクトごとに特定の SQL 操作を選択するには、オブジェクトを右クリックして同期する操作を選択します。 |
ステップ 6: 詳細設定
[次へ: 詳細設定] をクリックします。
| パラメーター | 説明 |
|---|---|
| モニタリングとアラート | タスクが失敗した場合や同期遅延がしきい値を超えた場合に通知を受信できるように有効化します。アラートのしきい値と通知の連絡先を設定します。詳細については、「モニタリングとアラートの設定」をご参照ください。 |
| 接続失敗時のリトライ時間 | タスク開始後に DTS が失敗した接続をリトライする時間。範囲:10~1440 分。デフォルト:720 分。これを少なくとも 30 分に設定してください。このウィンドウ内で DTS が再接続すると、タスクは自動的に再開されます。そうでない場合は失敗します。複数のタスクが同じソースまたはターゲットデータベースを共有している場合、最も短いリトライウィンドウが適用されます。リトライ中も、DTS インスタンスには引き続き料金が発生します。 |
| ETL の設定 | 組み込みの ETL (抽出·変換·書き出し) 機能を使用して、同期中にデータを変換できます。詳細については、「ETL とは」および「ETL の設定」をご参照ください。 |
ステップ 7: 事前チェックの実行
[次へ: タスク設定の保存と事前チェック] をクリックします。
このタスクの OpenAPI パラメーターをプレビューするには、ボタンにカーソルを合わせ、クリックする前に [OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスクを開始する前に事前チェックを実行します。すべての項目が合格するまでお待ちください。
項目が失敗した場合は、[詳細の表示] をクリックして問題を修正し、[再事前チェック] をクリックします。
安全に無視できるアラートが表示された場合は、[アラート詳細の確認] をクリックし、次に [無視] をクリックし、[OK] で確認してから [再事前チェック] をクリックします。アラート項目を無視すると、データの不整合が発生する可能性があります。
ステップ 8: 同期インスタンスの購入
成功率が 100% に達するまで待ってから、[次へ: インスタンスの購入] をクリックします。
[購入] ページで、次のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:固定期間分を前払いします。長期利用に適しており、コスト効率が高いです。従量課金:時間単位で課金されます。短期利用に適しています。不要になったらインスタンスをリリースして課金を停止してください。 |
| リソースグループ設定 | 同期インスタンスのリソースグループ。デフォルトはデフォルトリソースグループです。Resource Management とは |
| インスタンスクラス | 同期速度を決定します。スループット要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション課金でのみ利用可能です。オプション:1~9 か月、1、2、3、または 5 年。 |
[Data Transmission Service (従量課金) 利用規約] を読んで選択し、[購入して開始] をクリックします。確認ダイアログで [OK] をクリックします。
タスクがタスクリストに表示されます。DTS はまずフルデータ同期を実行し、その後自動的に増分同期に切り替わります。
次のステップ
タスクが実行された後、同期が期待どおりに機能していることを確認します。
[タスクのトポロジ] でタスクのステータスとサブタスクの進捗を監視します。
タスクリストで同期遅延を確認してください。遅延アラートについては、「モニタリングとアラートを設定する」をご参照ください。
フルデータ同期が完了した後、ソースのバイナリログ保持期間を 24 時間以上に設定できます。バイナリログの保持期間は、「前提条件」セクションで説明されている要件に従って設定してください。そうしないと、DTS のサービスレベルアグリーメント (SLA) に記載されているサービスの信頼性とパフォーマンスを達成できません。