DM DDL の特別な処理
TiDB データ移行 (DM) はデータを移行するときに、DDL ステートメントを解析し、ステートメントの種類と現在の移行段階に応じて処理します。
DDL文をスキップする
次のステートメントは DM ではサポートされていないため、DM は解析後すぐにスキップします。
説明 | 構文 |
---|---|
取引 | ^SAVEPOINT |
すべてのフラッシュSQLをスキップする | ^FLUSH |
テーブルメンテナンス | ^OPTIMIZE\\s+TABLE |
^ANALYZE\\s+TABLE | |
^REPAIR\\s+TABLE | |
一時テーブル | ^DROP\\s+(\\/\\*\\!40005\\s+)?TEMPORARY\\s+(\\*\\/\\s+)?TABLE |
トリガー | ^CREATE\\s+(DEFINER\\s?=.+?)?TRIGGER |
^DROP\\s+TRIGGER | |
手順 | ^DROP\\s+PROCEDURE |
^CREATE\\s+(DEFINER\\s?=.+?)?PROCEDURE | |
^ALTER\\s+PROCEDURE | |
ビュー | ^CREATE\\s*(OR REPLACE)?\\s+(ALGORITHM\\s?=.+?)?(DEFINER\\s?=.+?)?\\s+(SQL SECURITY DEFINER)?VIEW |
^DROP\\s+VIEW | |
^ALTER\\s+(ALGORITHM\\s?=.+?)?(DEFINER\\s?=.+?)?(SQL SECURITY DEFINER)?VIEW | |
関数 | ^CREATE\\s+(AGGREGATE)?\\s*?FUNCTION |
^CREATE\\s+(DEFINER\\s?=.+?)?FUNCTION | |
^ALTER\\s+FUNCTION | |
^DROP\\s+FUNCTION | |
テーブルスペース | ^CREATE\\s+TABLESPACE |
^ALTER\\s+TABLESPACE | |
^DROP\\s+TABLESPACE | |
イベント | ^CREATE\\s+(DEFINER\\s?=.+?)?EVENT |
^ALTER\\s+(DEFINER\\s?=.+?)?EVENT | |
^DROP\\s+EVENT | |
アカウント管理 | ^GRANT |
^REVOKE | |
^CREATE\\s+USER | |
^ALTER\\s+USER | |
^RENAME\\s+USER | |
^DROP\\s+USER | |
^DROP\\s+USER |
DDL文を書き換える
次のステートメントは、ダウンストリームに複製される前に書き換えられます。
元の声明 | 書き直された声明 |
---|---|
^CREATE DATABASE... | ^CREATE DATABASE...IF NOT EXISTS |
^CREATE TABLE... | ^CREATE TABLE..IF NOT EXISTS |
^DROP DATABASE... | ^DROP DATABASE...IF EXISTS |
^DROP TABLE... | ^DROP TABLE...IF EXISTS |
^DROP INDEX... | ^DROP INDEX...IF EXISTS |
シャードマージ移行タスク
DM が悲観的モードまたは楽観的モードでテーブルをマージおよび移行する場合、DDL レプリケーションの動作は他のシナリオとは異なります。詳細については、 悲観モードおよび楽観モードを参照してください。
オンラインDDL
オンライン DDL 機能では、DDL イベントも特別な方法で処理されます。詳細については、 GH-ost/PT-osc を使用するデータベースからの移行を参照してください。