查看 DDL 日志

Exisi 2023-01-25 18:34:22
Categories: Tags:
  • 要查看在涉及 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操作而写入strderrddl日志

示例

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>