操作シナリオ
gh-ost、pt-online-schema-change(以下、pt-oscと略称)などのツールを使用してソースデータベース内のテーブルに対してOnline DDLを実行する場合、Online DDLの変更によって生成された一時テーブルをターゲットデータベースに同期する必要があります。
DTSは、同期オブジェクトを選択する際に、対象テーブルの一時テーブル名を事前に関連付け、その後ソースデータベースで一時テーブルが生成されたときに併せて同期することをサポートしています。
gh-ostツールを使用してテーブル表名に対してOnline DDLを実行する場合、DTSは一時テーブル_表名_ghc、_表名_gho、_表名_delをターゲットデータベースに同期することをサポートしています。
pt-oscツールを使用してテーブル表名に対してOnline DDLを実行する場合、DTSは一時テーブル_表名_new、_表名_oldをターゲットデータベースに同期することをサポートしています。
適用範囲
Online DDL一時テーブルの同期をサポートするリンク範囲は以下の通りです:
MySQL/MariaDB/Percona/TDSQL-C MySQL > MySQL
MySQL/MariaDB/Percona > MariaDB
MySQL/MariaDB/TDSQL-C MySQL > TDSQL-C MySQL
MySQL/MariaDB/Percona/TDSQL-C MySQL > Kafka
MySQL/MariaDB/Percona > TDSQL Boundless
制約事項
テーブルマッピング(テーブルの名前変更)機能は、Online DDL一時テーブルの移行機能と競合するため、いずれか一方の機能のみを選択して使用できます。
操作手順
1. DTSコンソールにログインし、左側のナビゲーションでデータ同期ページを選択し、同期タスクを作成します。 2. 「同期オプションと同期オブジェクトの設定」ステップで、Online DDL一時テーブルを同期するかどうかとOnline DDLツールにチェックを入れてください。
gh-ostを選択すると、DTSはgh-ostツールによって生成された一時テーブル名(_表名_ghc、_表名_gho、_表名_del)をターゲットデータベースに移行します。
pt-oscを選択すると、DTSはpt-oscツールによって生成された一時テーブル名(_表名_new、_表名_old)をターゲットデータベースに移行します。
説明
右側の選択済みオブジェクトで、指定したテーブルオブジェクトを選択する必要があります。選択すると、下に「Online DDL一時テーブルを同期するかどうか」のボタンが表示されます。データベース名またはTablesを選択した場合、「Online DDL一時テーブルを同期するかどうか」のボタンは表示されません。
ソースデータベースに一時テーブル名_表名_new、_表名_oldと同じテーブル名が既に存在する場合、pt-oscは他の一時テーブルを生成します。pt-oscが生成する他の一時テーブル名は固定されていないため、DTSは他の一時テーブルを同期できません。この場合、同期オブジェクトとしてこのテーブルのみを選択することはできず、このテーブルが属するデータベース全体(またはインスタンス全体)を選択する必要があります。そうしないと、Online DDLの変更によって生成された一時テーブルのデータをターゲットデータベースに同期できません。