Data Transmission Service (DTS) は、スキーマ同期、完全データ同期、増分データ同期を含む、MariaDB データベースから ApsaraDB RDS for MySQL インスタンスへのデータ同期を行います。このトピックでは、ソースデータベースとして ApsaraDB RDS for MariaDB TX インスタンスを使用します。
前提条件
開始する前に、以下を確認してください。
ターゲットとして ApsaraDB RDS for MySQL インスタンスがあること。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
ソースインスタンスのすべてのデータを保持するのに十分なストレージがターゲットインスタンスにあること。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期およびフルデータ同期 | 無料 |
| 増分データ同期 | 有料です。詳細については、「課金概要」をご参照ください。 |
データベースアカウントに必要な権限
| データベース | 必要な権限 | 参照 |
|---|---|---|
| ソース ApsaraDB RDS for MariaDB TX インスタンス | 同期するオブジェクトに対する読み取りおよび書き込み権限 | アカウントの作成 および アカウント権限の変更またはリセット |
| ターゲット ApsaraDB RDS for MySQL インスタンス | ターゲットデータベースに対する読み取りおよび書き込み権限 | アカウントの作成 および アカウント権限の変更 |
増分同期でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、および DELETE |
| DDL | ALTER TABLE、ALTER VIEW、CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW、DROP INDEX、DROP TABLE、RENAME TABLE、および TRUNCATE TABLE |
RENAME TABLE は、ソースデータベースとターゲットデータベース間でデータ不整合を引き起こす可能性があります。同期するオブジェクトとしてテーブルを選択し、同期中にテーブルの名前を変更すると、このテーブルのデータはターゲットデータベースに同期されません。これを回避するには、このテーブルが属するデータベースを同期するオブジェクトとして選択します。RENAME TABLE 操作の前後にテーブルが属するデータベースが両方とも同期するオブジェクトに追加されていることを確認してください。
制限事項
ソースデータベースの要件
同期するテーブルには PRIMARY KEY または一意制約が必要であり、すべてのフィールドが一意である必要があります。そうでない場合、ターゲットデータベースに重複するデータレコードが含まれる可能性があります。
テーブルを同期するオブジェクトとして選択し、ターゲットデータベースで編集 (テーブル名やカラム名の変更など) する必要がある場合、単一の同期タスクは最大 1,000 テーブルをサポートします。1,000 を超えるテーブルが必要な場合は、複数のタスクを構成してテーブルをバッチで同期するか、データベース全体を同期してください。
ApsaraDB RDS for MariaDB インスタンスでは、バイナリログ記録がデフォルトで有効になっています。パラメーター
binlog_row_imageがfullに設定されていることを確認してください。そうしないと、事前チェックに失敗し、同期タスクを開始できません。バイナリログの保持要件: DTS がバイナリログを取得できない場合、タスクが失敗したり、データ不整合やデータ損失が発生したりする可能性があります。これらの保持要件を遵守してください。そうでない場合、DTS サービスレベルアグリーメント (SLA) はサービスの信頼性やパフォーマンスを保証しません。
増分のみの同期: 少なくとも 24 時間
完全同期と増分同期: 少なくとも 7 日間。完全データ同期が完了した後、保持期間を 24 時間以上に設定してください。
外部キーの動作
スキーマ同期中、DTS はソースデータベースからターゲットデータベースへ外部キーを同期します。
完全データ同期および増分データ同期中、DTS はセッションレベルで外部キーに対する制約チェックとカスケード操作を一時的に無効にします。
同期中のソースデータベースでのカスケード更新および削除操作は、データ不整合を引き起こす可能性があります。
実行時の制限
パフォーマンスへの影響: 完全データ同期は、ソースデータベースとターゲットデータベースの両方の読み取りおよび書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。同期はオフピーク時間にスケジュールしてください。
テーブルの断片化: 初期の完全データ同期中、同時 INSERT 操作によりターゲットテーブルで断片化が発生します。完全同期が完了した後、ターゲットデータベースの使用済み表領域はソースデータベースよりも大きくなります。
選択したテーブルに対する DDL 操作: 同期対象として (データベース全体ではなく) 特定のテーブルを選択した場合、同期中にこれらのテーブルに対してオンライン DDL 操作を実行する際には、pt-online-schema-change などのツールを使用しないでください。 代わりに Data Management (DMS) を使用して、ロックフリー DDL 操作を実行してください。 詳細については、「ロックフリー DDL 操作を実行する」をご参照ください。
ターゲットデータベースへの書き込み: 同期中にターゲットデータベースへのデータの書き込みには DTS のみを使用してください。これにより、ソースデータベースとターゲットデータベース間のデータ不整合を防ぎます。他のツールがターゲットデータベースに書き込む場合、データ損失が発生する可能性があるため、オンライン DDL 操作に DMS を使用しないでください。
ターゲットでの DDL 失敗: ターゲットデータベースで DDL 文が失敗しても、DTS タスクは実行を続けます。失敗した DDL 文を表示するには、タスクリログを確認してください。詳細については、「タスクリログの表示」をご参照ください。
大文字と小文字を区別しないカラム名: MySQL のカラム名は大文字と小文字を区別しません。ソースデータベース内の複数のカラム名が、大文字と小文字のみが異なる場合、これらのカラムのデータはターゲット MySQL データベースの同じカラムに書き込まれ、予期しない結果を引き起こす可能性があります。
同期後の検証: 同期が完了した後([ステータス] が [完了] に変化した後)、
analyze table <テーブル名>を実行して、データが宛先テーブルに書き込まれたかどうかを確認します。ソース MySQL データベースで高可用性(HA)スイッチオーバーが発生した場合、データがメモリにのみ書き込まれ、データ損失が発生する可能性があります。
操作手順
ステップ 1: データ同期ページを開く
以下のいずれかの方法を使用してデータ同期ページにアクセスし、データ同期インスタンスが存在するリージョンを選択します。
DTS コンソール
DTS コンソール にログインします。
左側のナビゲーションウィンドウで、[データ同期] をクリックします。
ページ左上隅で、データ同期インスタンスが存在するリージョンを選択します。
DMS コンソール
実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソール にログインします。
上部のナビゲーションバーで、[Data + AI] にポインターを合わせ、[DTS (DTS)] > [データ同期] を選択します。
「[データ同期タスク]」の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。
ステップ 2: ソースデータベースとターゲットデータベースを設定する
[タスクの作成] をクリックします。
以下のパラメーターを使用してソースデータベースとターゲットデータベースを設定します。
タスク設定
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS はタスク名を自動的に生成します。タスクを識別しやすいように、わかりやすい名前を指定してください。タスク名は一意である必要はありません。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | オプション。既存のデータベースを選択すると、DTS はパラメーターを自動的に入力します。DMS データベースインスタンスを登録していない場合は、このオプションをスキップし、以下の設定を構成してください。 |
| データベースタイプ | MariaDB を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンス リージョン | ソース ApsaraDB RDS for MariaDB TX インスタンスが存在するリージョン。 |
| Alibaba Cloud アカウント間のデータ複製 | Alibaba Cloud アカウント間でデータを同期するかどうか。この例では、[いいえ] を選択します。 |
| インスタンス ID | ソース ApsaraDB RDS for MariaDB TX インスタンスの ID。 |
| データベースアカウント | ソースインスタンスのデータベースアカウント。必要な権限については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
| 暗号化 | ソースデータベースへの接続を暗号化するかどうか。この例では、[非暗号化] を選択します。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| [既存の接続を選択] | 任意。 既存のデータベースを選択すると、DTS は自動的にパラメーターを入力します。 DMS データベースインスタンスを登録していない場合は、このオプションをスキップして、以下の設定を行ってください。 |
| [データベースタイプ] | [MySQL] を選択します。 |
| [アクセス方法] | [Alibaba Cloud インスタンス] を選択します。 |
| [インスタンスリージョン] | 宛先の ApsaraDB RDS for MySQL インスタンスが存在するリージョンです。 |
| [Alibaba Cloud アカウント間のデータレプリケーション] | Alibaba Cloud アカウント間でデータを同期するかどうかを指定します。 この例では、[いいえ] を選択します。 |
| [RDS インスタンス ID] | 宛先の ApsaraDB RDS for MySQL インスタンスの ID です。 |
| [データベースアカウント] | 宛先インスタンスのデータベースアカウントです。 必要な権限については、「データベースアカウントに必要な権限」をご参照ください。 |
| [データベースパスワード] | データベースアカウントのパスワードです。 |
| [暗号化] | 接続を暗号化するかどうかを指定します。 要件に応じて [非暗号化] または [SSL 暗号化] を選択します。 [SSL 暗号化] を使用するには、まず ApsaraDB RDS for MySQL インスタンスの SSL 暗号化を有効にする必要があります。 詳細については、「クラウド証明書を使用して SSL 暗号化を有効にする」をご参照ください。 |
[接続性のテストと続行] をクリックします。
DTS は、Alibaba Cloud データベースインスタンス(ApsaraDB RDS for MySQL や ApsaraDB for MongoDB インスタンスなど)のホワイトリストに、DTS サーバーの CIDR ブロックを自動的に追加します。Elastic Compute Service (ECS) インスタンス上でホストされている自己管理データベースの場合、DTS は ECS インスタンスのセキュリティグループルールに CIDR ブロックを自動的に追加します。ECS インスタンスがデータベースにアクセスできることを確認してください。データベースが複数の ECS インスタンスにデプロイされている場合は、各 ECS インスタンスのセキュリティグループルールに DTS サーバーの CIDR ブロックを手動で追加してください。データセンター内またはサードパーティのクラウド サービス プロバイダーによって提供される自己管理データベースの場合は、データベースのホワイトリストに CIDR ブロックを手動で追加してください。詳細については、「DTS サーバーの CIDR ブロック」をご参照ください。ホワイトリスト、インスタンスのセキュリティグループルール、または ECS セキュリティグループルールに DTS サーバーの CIDR ブロックを追加すると、セキュリティリスクが生じます。DTS を使用する前に、ユーザー名とパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストまたは ECS セキュリティグループルールの定期的なレビューと不正な CIDR ブロックの削除、または Express Connect、VPN Gateway、Smart Access Gateway を通じてデータベースを DTS に接続するなど、以下の予防措置を講じてください。
ステップ 3: オブジェクトを選択し、同期設定を構成する
同期するオブジェクトと詳細設定を構成します。
| パラメーター | 説明 |
|---|---|
| 同期タイプ | デフォルトでは、増分データ同期 が選択されています。また、スキーマ同期 および 全量データ同期 も選択してください。事前チェックが完了すると、DTS は選択したオブジェクトの既存データをソースデータベースからターゲットデータベースへ同期します。この既存データは、その後の増分同期の基盤となります。 |
| ソースデータベース内のトリガーの移行方法 | ソースデータベースからトリガーを同期する方法です。要件に応じて適切な方法を選択してください。同期対象のトリガーがない場合は、本パラメーターをスキップできます。詳細については、「ソースデータベースからのトリガーの同期または移行」をご参照ください。本パラメーターは、スキーマ同期 が選択されている場合のみ利用可能です。 |
| 競合テーブルの処理モード | ソースデータベースとターゲットデータベースで同名のテーブルが存在する場合の処理方法です。事前チェックを行い、エラーを報告オブジェクト名のマップ:同名のテーブルを検出し、該当する場合エラーを返します。競合が解消されるまでタスクを開始できません。宛先テーブルを削除またはリネームせずに競合を解消するには、オブジェクト名マッピング機能を使用して、宛先データベースへ同期されるテーブルの名前を変更してください。詳細については、「」をご参照ください。エラーを無視して続行:同名テーブルのチェックをスキップします。本オプションを選択した場合、データ不整合が発生する可能性があることにご注意ください。全量同期中は、ターゲットに既に存在するレコードとプライマリキーが一致するデータレコードはスキップされます。増分同期中は、該当するレコードが既存のレコードを上書きします。スキーマが異なる場合、データ初期化が失敗する、一部のカラムのみが同期される、またはタスクが失敗するなどの問題が発生する可能性があります。 |
| ソースオブジェクト | ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択し、右向き矢印アイコンをクリックして、選択済みオブジェクト セクションに追加します。同期対象のオブジェクトとして、データベース、テーブル、またはカラムを選択できます。 |
| 選択済みオブジェクト | 宛先インスタンス内でオブジェクト名を変更するには、選択済みオブジェクト単一オブジェクト名のマッピング セクションで該当オブジェクトを右クリックします。詳細については、「」をご参照ください。複数のオブジェクトを一度にリネームするには、 セクションの右上隅にある 一括編集[選択されたオブジェクト]複数のオブジェクト名の一括マッピング をクリックします。詳細については、「」をご参照ください。データベースまたはテーブルに対して特定の SQL 操作を選択するには、選択済みオブジェクト セクションで該当オブジェクトを右クリックします。詳細については、「増分同期でサポートされる SQL 操作」をご参照ください。WHERE 条件によるデータフィルターを設定するには、選択済みオブジェクト セクションで該当テーブルを右クリックします。詳細については、「フィルター条件の指定」をご参照ください。オブジェクト名マッピング機能を用いてオブジェクト名を変更した場合、そのオブジェクトに依存する他のオブジェクトの同期が失敗する可能性があります。 |
ステップ 4: 詳細設定を構成する
[次へ: 詳細設定] をクリックし、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| [タスクスケジューリング用専用クラスター] | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| モニタリングとアラート | 同期タスクのアラートを設定するかどうか。タスクが失敗した場合、または同期遅延が指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。[いいえ] を選択するとアラートが無効になり、[はい] を選択するとアラートのしきい値と通知設定を構成できます。詳細については、「DTS タスクを作成する際にモニタリングとアラートを設定する」をご参照ください。 |
| 失敗した接続のリトライ時間 | ソースデータベースまたはターゲットデータベースへの接続が失敗した場合のリトライ時間範囲。有効な値: 10 ~ 1440 分。デフォルト値: 720。この値を 30 より大きく設定してください。DTS が指定された時間範囲内に再接続した場合、タスクは再開されます。そうでない場合、タスクは失敗します。複数のタスクが同じソースデータベースまたはターゲットデータベースを共有しているが、リトライ時間範囲が異なる場合、最短の範囲が優先されます。DTS はリトライ中にインスタンスに対して課金します。要件に基づいてリトライ時間範囲を指定し、ソースインスタンスとターゲットインスタンスがリリースされた後、速やかにインスタンスをリリースしてください。 |
| その他の問題における再試行時間 | DDL または DML 操作が失敗した場合のリトライ時間範囲。有効値: 1~1440 分。デフォルト値: 10。この値を 10 より大きい値に設定します。指定された範囲内で操作が成功した場合、タスクは再開されます。そうでない場合、タスクが失敗します。この値は、[失敗した接続のリトライ時間] より小さくする必要があります。 |
| 全データ同期のスロットリングを有効化 | 完全データ同期の速度制御を設定して、データベースサーバーへの負荷を軽減します。[ソースデータベースへのクエリ数/秒 (QPS)]、[完全データ移行の読み取り数/秒 (RPS)]、および[完全移行時のデータ移行速度 (MB/s)] パラメーターを設定します。このパラメーターは、[完全データ同期] が選択されている場合にのみ利用可能です。 |
| 増分データ同期のスロットリング有効化 | 増分同期のスロットルを実行するかどうかを指定します。[増分同期のRPS] および [増分同期のデータ同期速度 (MB/s)] パラメーターを設定して、ターゲットデータベースサーバーへの負荷を軽減します。 |
| 環境タグ | DTS インスタンスを識別するための環境タグ。要件に基づいてタグを選択してください。 |
| [ETL の設定] | 抽出・変換・書き出し (ETL) 機能を有効にするかどうかを指定します。 コードエディタでデータ処理文を入力する場合は、[はい] を選択します。 詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 ETL をスキップする場合は、[いいえ] を選択します。 ETL の詳細については、「ETL とは |
ステップ 5: 事前チェックを実行し、インスタンスを購入する
[次へ: タスク設定を保存して事前チェック] をクリックします。
関連する API 操作のパラメーターを表示するには、[Next: Save Task Settings And Precheck] をポイントして、[Preview OpenAPI Parameters] をクリックします。
事前チェックが完了するまで待ちます。DTS は同期タスクを開始する前に事前チェックを実行します。
事前チェックが失敗した場合は、各失敗した項目の横にある [詳細を表示] をクリックします。チェック結果に基づいて原因を分析し、問題を修正します。その後、再度事前チェックを実行します。
項目に対してアラートがトリガーされた場合:
アラートを無視できない場合は、[詳細の表示] をクリックして問題をトラブルシューティングします。その後、事前チェックを再度実行します。
アラートを無視できる場合は、[アラートの詳細を確認] をクリックします。詳細表示ダイアログボックスで、[無視] をクリックし、次に [OK] をクリックします。[事前チェックを再実行] をクリックして、事前チェックを再度実行します。アラートを無視すると、データ不整合や潜在的なリスクが発生する可能性があります。
「[成功率]」が100%になるまで待ちます。その後、「[次へ: インスタンスの購入]」をクリックします。
購入ページで、以下のパラメーターを設定します。
新しいインスタンスクラス
パラメーター 説明 課金方法 サブスクリプション:インスタンス作成時に前払いします。長期利用の場合、コスト効率に優れています。従量課金:1 時間単位で課金されます。短期利用に適しています。不要になった時点でインスタンスをリリースして、コストを削減してください。従量課金(サーバーレス):実際の使用量に基づいて課金され、自動スケーリングが行われます。 リソースグループ設定 データ同期インスタンスが属するリソースグループです。デフォルト値:デフォルトリソースグループ。詳細については、「What is Resource Management? インスタンスクラス DTS は、異なる同期速度を持つインスタンスクラスを提供しています。要件に応じてインスタンスクラスを選択してください。詳細については、「Instance classes of data synchronization instances」をご参照ください。 サブスクリプション期間 サブスクリプション課金方法を選択した場合、サブスクリプション期間を指定します:1~9 ヶ月、または 1 年、2 年、3 年、5 年。 DTS Insight
パラメーター 説明 DTS Insight インテリジェント診断のために DTS Insight を有効にするかどうか。要件に基づいてオプションを選択してください。 読み取り、および [Data Transmission Service (Pay-as-you-go) Service Terms] を選択します。
タスクを保存してすぐに開始する場合は[購入して開始]を、開始せずに保存する場合は[購入して保存]をクリックします。 表示されるダイアログボックスで、[OK] をクリックします。
タスクはタスクリストに表示され、その進捗を監視できます。