- 要查看在涉及 InnoDB 存储引擎的原子 DDL 操作期间写入 mysql.innodb_ddl_log 数据字典表的 DDL 日志,请启用 innodb_print_ddl_logs 以让 MySQL 将 DDL 日志写入 stderr。根据主机操作系统和 MySQL 配置,stderr 可能是错误日志、终端或控制台窗口
- InnoDB 将 DDL 日志写入 mysql.innodb_ddl_log 表以支持 DDL 操作的重做和回滚。 mysql.innodb_ddl_log 表是一个隐藏的数据字典表,它位于 mysql.ibd 数据字典表空间中。与其他隐藏数据字典表一样,mysql.innodb_ddl_log 表不能在 MySQL 的非调试版本中直接访问。
- mysql.innodb_ddl_log 表的结构对应于以下定义:
示例
CREATE TABLE mysql.innodb_ddl_log (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
thread_id BIGINT UNSIGNED NOT NULL,
type INT UNSIGNED NOT NULL,
space_id INT UNSIGNED,
page_no INT UNSIGNED,
index_id BIGINT UNSIGNED,
table_id BIGINT UNSIGNED,
old_file_path VARCHAR(512) COLLATE UTF8_BIN,
new_file_path VARCHAR(512) COLLATE UTF8_BIN,
KEY(thread_id)
);
字段 |
描述 |
id |
DDL 日志记录的唯一标识符。 |
thread_id |
为每条DDL日志记录分配一个thread_id,用于重放和删除属于特定DDL操作的DDL日志。涉及多个数据文件操作的 DDL 操作会生成多个 DDL 日志记录。 |
type |
DDL 操作类型。类型包括 FREE(删除索引树)、DELETE(删除文件)、RENAME(重命名文件)或 DROP(从 mysql.innodb_dynamic_metadata 数据字典表中删除元数据)。 |
space_id |
表空间 ID。 |
page_no |
包含分配信息的页面;例如,索引树根页面。 |
index_id |
索引 ID。 |
table_id |
表ID。 |
old_file_path |
旧的表空间文件路径。由创建或删除表空间文件的 DDL 操作使用;也由重命名表空间的 DDL 操作使用。 |
new_file_path |
新的表空间文件路径。由重命名表空间文件的 DDL 操作使用。 |
- 本例演示了如何启用innodb_print_ddl_logs,以查看为CREATE TABLE操作而写入strderr的ddl日志
示例
mysql> SET GLOBAL innodb_print_ddl_logs=1;
mysql> CREATE TABLE t1 (c1 INT) ENGINE = InnoDB;
[Note] [000000] InnoDB: DDL log insert : [DDL record: DELETE SPACE, id=18, thread_id=7,
space_id=5, old_file_path=./test/t1.ibd]
[Note] [000000] InnoDB: DDL log delete : by id 18
[Note] [000000] InnoDB: DDL log insert : [DDL record: REMOVE CACHE, id=19, thread_id=7,
table_id=1058, new_file_path=test/t1]
[Note] [000000] InnoDB: DDL log delete : by id 19
[Note] [000000] InnoDB: DDL log insert : [DDL record: FREE, id=20, thread_id=7,
space_id=5, index_id=132, page_no=4]
[Note] [000000] InnoDB: DDL log delete : by id 20
[Note] [000000] InnoDB: DDL log post ddl : begin for thread id : 7
[Note] [000000] InnoDB: DDL log post ddl : end for thread id : 7
来自 <https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html>