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 を使用するデータベースからの移行を参照してください。