DM DDL の特別な処理
TiDB データ移行 (DM) がデータを移行するとき、DDL ステートメントを解析し、ステートメントの種類と現在の移行段階に従ってそれらを処理します。
DDL ステートメントをスキップする
次のステートメントは DM でサポートされていないため、DM は解析直後にそれらをスキップします。
説明 | SQL |
---|---|
取引 | ^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 を使用するデータベースからの移行を参照してください。