文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  ddl_rewriter 插件

7.6.5 ddl_rewriter 插件

MySQL 8.4 包含一个 ddl_rewriter 插件,它会修改服务器接收到的 CREATE TABLE 语句,然后再解析和执行它们。该插件会删除 ENCRYPTIONDATA DIRECTORYINDEX 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 重写后,将语句以其显示的格式写入其中。

安装后,ddl_rewriter 会公开 Performance Schema memory/rewriter/ddl_rewriter 工具,用于跟踪插件内存使用情况。请参阅 第 29.12.20.10 节,“内存摘要表”