暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5.6.5 ddl_rewriter插件

原创 由迪 2020-08-25
1240

MySQL 8.0.16及更高版本包含一个ddl_rewriter 插件,该插件可CREATE TABLE 在服务器解析和执行语句之前修改服务器接收的语句。该插件删除了ENCRYPTIONDATA DIRECTORYINDEX 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将公开Performance Schema memory/rewriter/ddl_rewriter 工具以跟踪插件内存的使用。请参见 第26.12.18.10节“内存摘要表”

MySQL 8.0.16及更高版本包含一个ddl_rewriter 插件,该插件可CREATE TABLE 在服务器解析和执行语句之前修改服务器接收的语句。该插件删除了ENCRYPTIONDATA DIRECTORYINDEX 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将公开Performance Schema memory/rewriter/ddl_rewriter 工具以跟踪插件内存的使用。请参见 第26.12.18.10节“内存摘要表”

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论