Binary Log 中包含了

  • 数据库更改的事件,比如表创建或者数据更改
  • 一条语句更新数据花费的时间

Binary log 的目的:

  • For replication,在 replication 源服务器的 binary log 提供了数据更改的记录,这些记录会发送给 replicas。源服务器会将 binary log 发送给 replicas,然后在 replicas 服务器中重新执行事务,以做到和源服务器相同的数据更改。[[MySQL Replication 主从同步原理]]
  • 特定的数据恢复操作需要依赖于 binary log。在备份恢复之后,在 binary log 中被记录的 events 可以从备份点开始被重新执行,这些修改会将数据库状态更新到最新

binary log 不会记录那些不修改数据的语句,比如 SELECT 或 SHOW 等等。如果要记录所有的语句,可以使用 [[MySQL General Query Log]]

清理 bin log

不要直接在操作系统删除 bin.log 文件,让 MySQL 自己处理这些文件。

清理 binlogs 的命令是:

PURGE BINARY LOGS TO 'mysql-bin.000223';

这一行命令会清理 mysql-bin.000223 之前的 binary logs.

PURGE BINARY LOGS BEFORE 'datetimestamp';
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;

这一行会清理 3 天前的 binary logs。

设置自动清理

如果只想要保留 3 天的 binary log ,那么可以修改配置文件 /etc/my.cnf:

[mysqld]
expire_logs_days=3

或者直接使用命令:

mysql> SET GLOBAL expire_logs_days=3;

Extend

  • [[MySQL set the binary log format]]

reference