MySQL 8.4 Release Notes
7.6.5 ddl_rewriter 插件
MySQL 8.4 中包括一个 ddl_rewriter
插件,该插件在服务器接收到语句前修改CREATE TABLE
语句。该插件删除 ENCRYPTION
、DATA DIRECTORY
和 INDEX DIRECTORY
子句,这可能在恢复从加密数据库或存储表外部的 SQL덤프文件时很有帮助。例如,该插件可以使得恢复这些dump文件到未加密实例或不可访问路径的环境中。
在使用 ddl_rewriter
插件前,按照第7.6.5.1节,“安装或卸载 ddl_rewriter”中的说明进行安装。
ddl_rewriter
插件在服务器接收到语句前对其进行检查,根据以下条件对其进行重写:
-
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
暴露性能chema memory/rewriter/ddl_rewriter
仪表,以追踪插件内存使用。见第29.12.20.10节,“内存摘要表”