MySQL 8.0 リファレンスマニュアル


5.6.5 ddl_rewriter プラグイン

MySQL 8.0.16 以上には、サーバーが受け取る CREATE TABLE ステートメントを解析および実行する前に変更する ddl_rewriter プラグインが含まれています。 プラグインは、ENCRYPTIONDATA 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「メモリーサマリーテーブル」を参照してください


関連キーワード:  サーバー, rewriter, 変数, インストール, ステートメント, データ, 複数, インスタンス, Server, ログ