MySQL 8.3 Release Notes
MySQL 8.3 包括一个 ddl_rewriter
插件,该插件修改服务器收到的 CREATE TABLE
语句,在服务器解析和执行它们之前。该插件删除 ENCRYPTION
、DATA DIRECTORY
和 INDEX DIRECTORY
子句,这可能有助于从加密数据库或表存储在数据目录外的 SQL 转储文件中恢复表格。例如,该插件可能使恢复这些转储文件到未加密的实例或在数据目录外的路径不可访问的环境中。
在使用 ddl_rewriter
插件之前,请按照 第 7.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
插件公开了性能架构 memory/rewriter/ddl_rewriter
仪表,以跟踪插件的内存使用情况。请参阅 第 29.12.20.10 节“内存摘要表”