Data Transmission Service (DTS) を使用して、PolarDB for MySQL クラスターから Lindorm インスタンスのワイドテーブルエンジンにデータを同期します。DTS は初期フルデータロードを実行し、その後、増分変更を継続的に適用して、ターゲットとの同期を維持します。
前提条件
開始する前に、次の条件を満たしていることを確認してください。
LindormTable エンジンを使用する Lindorm インスタンスがあり、利用可能なストレージ容量がソース PolarDB for MySQL クラスターで使用されているストレージ容量を超えていること。詳細については、「インスタンスの作成」をご参照ください。
ターゲット Lindorm インスタンスで MySQL 互換性機能が有効になっていること。詳細については、「MySQL 互換性機能の有効化」をご参照ください。
同期されたデータを受信するために、ターゲット Lindorm インスタンスにデータベース (名前空間) と事前パーティション化されたワイドテーブルが作成されていること。詳細については、「MySQL クライアントを使用した LindormTable への接続と使用」、「Lindorm-cli を使用したワイドテーブルエンジンへの接続と使用」、「Lindorm Shell を使用した LindormTable へのアクセス」、「CREATE TABLE」、および「データ型マッピング」をご参照ください。
ソース PolarDB for MySQL クラスターでバイナリロギングが有効になっており、
loose_polar_log_binパラメーターがONに設定されていること。詳細については、「バイナリロギングの有効化」および「パラメータの変更」をご参照ください。PolarDB for MySQL クラスターでバイナリロギング機能を有効にすると、バイナリログが使用するストレージ容量に対して追加料金が発生します。
ソースクラスターでバイナリログの保持期間が少なくとも 3 日間 (7 日間を推奨) に設定されていること。詳細については、「保持期間の変更」をご参照ください。保持期間が不十分な場合、データの不整合や損失が発生し、DTS サービスレベルアグリーメント (SLA) に影響する可能性があります。
必要な権限を持つデータベースアカウントが用意されていること。詳細については、「データベースアカウントに必要な権限」をご参照ください。
ターゲット Lindorm インスタンスで作成されるオブジェクトは、「クォータと制限」で指定されている要件を満たす必要があります。
課金
同期タイプ | 料金 |
フルデータ同期 | 無料 |
増分データ同期 | 有料。詳細については、「課金の概要」をご参照ください。 |
増分同期でサポートされている SQL 操作
操作タイプ | SQL ステートメント |
DML | INSERT、UPDATE、DELETE |
DDL | CREATE TABLE、DROP TABLE、ADD COLUMN |
LindormTable エンジンの制限により、DTS は ADD COLUMN ステートメントから追加の属性を削除します。たとえば、ソースでALTER TABLE test ADD COLUMN col INT DEFAULT 0;が実行された場合、DTS はターゲットでALTER TABLE test ADD COLUMN col INT;を実行します。
データベースアカウントに必要な権限
データベース | 必要な権限 | 参照 |
ソース PolarDB for MySQL クラスター | 読み取りおよび書き込み権限 | |
ターゲット Lindorm インスタンス | ターゲット名前空間に対する読み取りおよび書き込み権限 |
制限事項
スキーマ同期はサポートされていません。フルデータ同期と増分データ同期のみ利用可能です。
BIT 型のデータは同期できません。
同期対象のデータには、少なくとも 1 つのプライマリキー以外のフィールドが含まれている必要があります。プライマリキーフィールドのみの同期はサポートされていません。
同期対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。それ以外の場合、ターゲットに重複レコードが含まれる可能性があります。
同期オブジェクトとしてテーブルを選択し、ターゲットでテーブルまたは列の名前を変更する場合、単一のタスクでは最大 1,000 テーブルまでサポートしています。この制限を超えると、リクエストエラーが発生します。この場合は、複数のタスクを構成するか、代わりにデータベース全体を同期してください。
DTS は、ソース PolarDB for MySQL クラスターの読み取り専用ノードを同期しません。
DTS は、ソース PolarDB for MySQL クラスターから Object Storage Service (OSS) 外部テーブルを同期しません。
DTS は、フルデータ同期中のプライマリ/セカンダリ切り替えをサポートしていません。切り替えが発生した場合は、同期タスクを再構成してください。
データは、Lindorm インスタンスのワイドテーブルエンジンにのみ書き込むことができます。
VARBINARY 型の空の文字列は、DTS および Lindorm インスタンスでは null 値として扱われます。
ソースとターゲットで DECIMAL 型のフィールドの精度が異なる場合、タスクは失敗します。
Lindorm インスタンスのデータは、「データリクエストの制限」の要件を満たす必要があります。それ以外の場合、タスクは失敗します。
フルデータ同期中は、ソースデータベースで DDL 操作を実行しないでください。実行すると、タスクが失敗します。DTS はこのフェーズ中にソースをクエリするため、メタデータロックが発生し、ソースでの DDL 操作もブロックされる可能性があります。
同期中に、pt-online-schema-change などのツールを使用して同期オブジェクトに対してオンライン DDL 操作を実行しないでください。実行すると、タスクが失敗します。
同期中に DTS 以外のデータがターゲットに書き込まれると、データの不整合が発生する可能性があります。
初期フルデータ同期中、並行 INSERT 操作により、ターゲットでテーブルの断片化が発生します。初期フルデータ同期が完了すると、ターゲットテーブルのストレージ容量がソースよりも大きくなります。
初期フルデータ同期中、DTS は両方のデータベースの読み取りおよび書き込みリソースを使用するため、サーバーの負荷が増加する可能性があります。両方のデータベースの CPU 負荷が 30% 未満のときなど、オフピーク時に同期をスケジュールしてください。
DTS は定期的にソースデータベースで
CREATE DATABASE IF NOT EXISTS `test`を実行して、バイナリログファイルの位置を進めます。DTS インスタンスに障害が発生した場合、DTS チームは 8 時間以内に復旧を試みます。復旧には、インスタンスの再起動または DTS インスタンスパラメータの調整 (データベースパラメータは変更されません) が含まれる場合があります。調整対象となる可能性のあるパラメータには、「インスタンスパラメータの変更」で説明されているものが含まれます。
VECTOR 型データの同期はサポートされていません。
同期タスクの構成
ステップ 1:データ同期ページを開く
次のいずれかの方法を使用します。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションペインで、[データ同期] をクリックします。
左上隅で、同期タスクのリージョンを選択します。
DMS コンソール
注記
実際の手順は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、[Data + AI] にポインターを合わせ、[DTS (DTS)] > [データ同期] を選択します。
[データ同期タスク] の右側にあるドロップダウンリストから、同期インスタンスが存在するリージョンを選択します。
ステップ 2:ソースデータベースとターゲットデータベースを構成する
[タスクの作成] をクリックします。
次の表に従って、タスクパラメータを構成します。
セクション
パラメータ
説明
該当なし
タスク名
タスクを識別するための説明的な名前を入力します。一意の名前は必須ではありません。DTS はデフォルト名を自動的に生成します。
ソースデータベース
既存の接続を選択
ソースインスタンスがすでに DTS に登録されている場合は、ドロップダウンリストから選択すると、DTS によってパラメーターが自動的に入力されます。それ以外の場合は、パラメーターを手動で設定します。DMS コンソールで、[DMS データベースインスタンスを選択] ドロップダウンリストから選択します。
データベースタイプ
[PolarDB for MySQL] を選択します。
[アクセス方法]
[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョン
ソース PolarDB for MySQL クラスターのリージョンを選択します。
Alibaba Cloud アカウント間でのデータ複製
同じ Alibaba Cloud アカウント内で同期するには、[いいえ] を選択します。
PolarDB クラスター ID
ソース PolarDB for MySQL クラスターの ID を選択します。
データベースアカウント
ソースクラスターのデータベースアカウントを入力します。詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
暗号化
必要に応じて SSL 暗号化オプションを選択します。詳細については、「SSL 暗号化の設定」をご参照ください。
ターゲットデータベース
既存の接続を選択
宛先インスタンスがすでに DTS に登録されている場合は、ドロップダウンリストから選択します。それ以外の場合は、パラメーターを手動で設定します。DMS コンソールで、[DMS データベースインスタンスを選択] ドロップダウンリストから選択します。
データベースタイプ
[Lindorm] を選択します。
[アクセス方法]
[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョン
ターゲット Lindorm インスタンスのリージョンを選択します。
インスタンス ID
ターゲット Lindorm インスタンスの ID を選択します。
データベースアカウント
ターゲット Lindorm インスタンスのデータベースアカウントを入力します。詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
[接続をテストして続行] をクリックします。
DTS サーバーからのアクセスを許可するには、DTS サーバーの CIDR ブロックを両方のデータベースのセキュリティ設定に追加してください。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。 ソースまたは宛先が自己管理型データベースで、[アクセス方法] が [Alibaba Cloud インスタンス] 以外の場合は、[DTS サーバーの CIDR ブロック] ダイアログボックスで [接続をテスト] をクリックします。
ステップ 3:同期するオブジェクトを選択する
[オブジェクトの構成] ステップでは、次のパラメーターを設定します。
パラメータ | 説明 |
[同期タイプ] | [増分データ同期] がデフォルトで選択されています。オプションで [完全データ同期] を追加します。このソースと宛先のペアでは、スキーマ同期は利用できません。 |
[競合するテーブルの処理モード] | デフォルト値を使用します。 |
[ターゲットインスタンスでのオブジェクト名の大文字/小文字] | 移行先のデータベース名、テーブル名、およびカラム名の大文字/小文字の区別を制御します。 デフォルトでは [DTS デフォルトポリシー] が選択されています。 「移行先インスタンスでのオブジェクト名の大文字/小文字の設定」をご参照ください。 |
[ソースオブジェクト] | [ソースオブジェクト] からオブジェクトを選択し、 |
[選択済みオブジェクト] | 移行先のデータベース (名前空間)、テーブル、またはカラムの名前が移行元と異なる場合は、オブジェクト名のマッピング機能を使用します。「オブジェクト名をマッピングする」をご参照ください。WHERE 条件で行をフィルターするには、[選択されたオブジェクト] のテーブルを右クリックして条件を指定します。「フィルター条件を指定する」をご参照ください。増分同期のために特定の SQL 操作を選択するには、[選択されたオブジェクト] のオブジェクトを右クリックして操作を選択します。 |
オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、依存オブジェクトの同期が失敗する可能性があります。
ステップ 4:詳細設定を構成する
[次へ: 詳細設定] をクリックし、以下のパラメーターを設定します。
パラメータ | 説明 |
[タスクスケジューリング用の専用クラスター] | DTS はデフォルトで共有クラスターを使用します。より高い安定性を得るには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
[接続失敗時の再試行時間] | 接続失敗後に DTS が再試行する時間。有効な値:10~1,440 分。デフォルト:720 分。30 分以上に設定してください。この期間内にDTSが再接続できた場合、タスクは再開されます。それ以外の場合、タスクは失敗します。複数のタスクが同じソースまたはターゲットを共有する場合、最も短い再試行時間が適用されます。再試行中も、DTS インスタンスの料金は引き続き発生します。 |
[その他の問題の再試行時間] | DDL または DML の失敗後に DTS が再試行する時間。有効値: 1~1,440 分。デフォルト: 10 分。10 分より大きい値に設定します。[接続失敗時の再試行時間] より小さい値にする必要があります。 |
[フルデータ同期のスループット制限を有効にする] | 全量データ同期中に DTS がソースと宛先に与える負荷を制限します。 必要に応じて、[ソースデータベースへの 1 秒あたりのクエリ数 (QPS)]、[全量データ移行の RPS]、および[全量移行のデータ移行速度 (MB/秒)] を設定します。 [全量データ同期] が選択されている場合にのみ利用可能です。 |
[増分データ同期のスループット制限を有効にする] | 増分データ同期中の負荷を制限します。必要に応じて [増分データ同期の RPS] と [増分同期のデータ同期速度 (MB/s)] を設定します。 |
[正方向タスクと逆方向タスクのハートビートテーブルに対する SQL 操作を削除するかどうか] | DTS がソースデータベースにハートビートテーブル操作を書き込むかどうかを制御します。[はい]alert notification settings: ハートビート操作を書き込みません (タスクにレイテンシー値が表示される場合があります)。[いいえ]: ハートビート操作を書き込みます (ソースデータベースの物理バックアップとクローニングに影響する場合があります)。 |
[環境タグ] | 必要に応じて、環境を識別するタグを選択します。 |
[ETL の構成] | ETL (extract, transform, and load) 機能を有効にするかどうかを指定します。[はい]: コードエディタにデータ処理文を入力します。「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。[いいえ]: ETL 設定をスキップします。「ETL とは」をご参照ください。 |
[監視とアラート] | タスクが失敗した場合、または同期レイテンシがしきい値を超えた場合にアラートを設定します。 [はい]: アラートのしきい値と通知連絡先を設定します。 詳細については、「DTS タスクの作成時にモニタリングとアラートを設定する」をご参照ください。 [いいえ]: アラートは送信されません。 |
ステップ 5:事前チェックを実行する
[次へ: タスク設定の保存と事前チェック] をクリックします。
このタスク設定の API パラメーターをプレビューするには、次に進む前に [次へ: タスク設定を保存して事前チェック] にマウスを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスクを開始する前に事前チェックを実行します。事前チェックが失敗した場合:
失敗した各項目の[詳細の表示]をクリックして問題を解決し、[再事前チェック]をクリックします。
アラート項目を無視できる場合は、[アラート詳細の確認] をクリックし、次に [無視] をクリックし、[再度事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 6:インスタンスを購入する
[成功率] が [100%] になるまで待ってから、[次へ: インスタンスの購入] をクリックします。
[購入] ページで、インスタンスパラメーターを設定します。
セクション
パラメータ
説明
[新しいインスタンスクラス]
[課金方法]
[サブスクリプション]: 一定期間分を前払いします。長期利用の場合、より費用対効果が高くなります。従量課金: 時間単位で課金され、短期利用に適しています。不要になったインスタンスをリリースすると課金が停止されます。
[リソースグループ設定]
同期インスタンスのリソースグループ。 デフォルト: [デフォルトのリソースグループ]。 「リソース管理とは」をご参照ください。
[インスタンスクラス]
同期速度はインスタンスクラスによって異なります。スループット要件に基づいてクラスを選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
[サブスクリプション期間]
サブスクリプション課金方法の場合のみ利用可能です。オプション:1~9 か月、または 1、2、3、5 年。
[データ転送サービス (従量課金) サービス規約]を読み、選択します。
[購入して開始] をクリックし、ダイアログボックスで [OK] をクリックします。
タスクがタスクリストに表示されます。タスクリストで進行状況を監視します。