MySQL 8.0.16 以上には、サーバーが受け取る CREATE TABLE
ステートメントを解析および実行する前に変更する ddl_rewriter
プラグインが含まれています。 プラグインは、ENCRYPTION
、DATA DIRECTORY
および INDEX DIRECTORY
句を削除します。これらは、暗号化されているか、テーブルがデータディレクトリ外に格納されているデータベースから作成された SQL ダンプファイルからテーブルをリストアする場合に役立ちます。 たとえば、このようなダンプファイルを暗号化されていないインスタンス、またはデータディレクトリ外のパスにアクセスできない環境にリストアできます。
ddl_rewriter
プラグインを使用する前に、セクション5.6.5.1「ddl_rewriter のインストールまたはアンインストール」 に記載されている手順に従ってインストールします。
ddl_rewriter
は、解析前にサーバーが受信した SQL ステートメントを調べ、次の条件に従ってリライトします:
ddl_rewriter
では、CREATE TABLE
ステートメントのみが考慮され、入力行の先頭またはプリペアドステートメントのテキストの先頭で発生するスタンドアロンステートメントである場合にのみ考慮されます。ddl_rewriter
では、ストアドプログラム定義内のCREATE TABLE
ステートメントは考慮されません。 ステートメントは複数の行にまたがることができます。-
リライトの対象となるステートメント内では、次の句のインスタンスがリライトされ、各インスタンスが単一の領域に置き換えられます:
ENCRYPTION
DATA DIRECTORY
(テーブルおよびパーティションレベル)INDEX DIRECTORY
(テーブルおよびパーティションレベル)
リライトは大文字と小文字に依存しません。
ddl_rewriter
がステートメントをリライトすると、警告が生成されます:
mysql> CREATE TABLE t (i INT) DATA DIRECTORY '/var/mysql/data';
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
Level: Note
Code: 1105
Message: Query 'CREATE TABLE t (i INT) DATA DIRECTORY '/var/mysql/data''
rewritten to 'CREATE TABLE t (i INT) ' by a query rewrite plugin
1 row in set (0.00 sec)
一般クエリーログまたはバイナリログが有効になっている場合、サーバーは、ddl_rewriter
による書換え後のステートメントに書き込みます。
インストールされると、ddl_rewriter
はプラグインメモリーの使用状況を追跡するためにパフォーマンススキーマ memory/rewriter/ddl_rewriter
インストゥルメントを公開します。 セクション27.12.18.10「メモリーサマリーテーブル」を参照してください