MySQL内部手册/二进制日志/二进制日志概述

20.1二进制日志概述

[本节中的一些信息来源于。第20章,二进制日志, MySQL参考手册。]

二进制日志是一组日志文件,其中包含MySQL服务器实例的数据修改信息。通过启动服务器来启用日志——log-bin选择。

MySQL 3.23.14中引入了二进制日志。它包含所有更新数据的语句。它还包含可能更新它的语句(例如,a删除它不匹配任何行),除非使用基于行的日志记录。语句以描述修改的“事件”的形式存储。二进制日志还包含关于每个语句花费多长时间更新数据的信息。

二进制日志还包含一些其他元数据,包括:

  • 正确地重新生成语句所需的有关服务器状态的信息

  • 错误代码

  • 维护二进制日志本身所需的元数据(例如,旋转事件)

二进制日志是在服务器操作期间产生的服务器全局状态变化的跟踪。它所包含的事件描述了这种状态的变化。更准确地说,二进制日志事件描述了可以用于再现服务器上发生的相同全局状态变化的操作。

二进制日志有两个重要的目的:

  • 对于复制,在主复制服务器上使用二进制日志作为要发送到从服务器的语句的记录。二进制日志格式和处理的许多细节都是专门用于此目的的。主服务器将其二进制日志中包含的事件发送给从服务器,从服务器执行这些事件,以进行与主服务器相同的数据更改。从机将从主机接收到的事件存储在中继日志中,直到它们可以执行为止。中继日志的格式与二进制日志相同。

  • 某些数据恢复操作需要使用二进制日志。恢复备份文件后,将重新执行备份之后记录在二进制日志中的事件。这些事件使数据库从备份点更新到最新。

有两种类型的二进制日志:

  • 基于语句的日志记录:事件包含产生数据更改(插入、更新、删除)的SQL语句

  • 基于行的日志记录:事件描述对单个行的更改

混合日志默认使用基于语句的日志,但根据需要自动切换到基于行的日志。

从MySQL 5.1开始就可以使用基于行(和混合)的日志记录。

有关基于行的日志记录的详细信息,请参见基于行的二进制日志

mysqlbinlog实用程序可用于以可读形式打印二进制或中继日志内容。