Mysql -- Binlog

  • 介绍

    二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。

作用:

  • 灾难时的数据恢复;
  • MySQL的主从复制。在MySQL8.x版本中,默认二进制日志是开启着的。涉及到的参数如下

binlog-params

  • 日志格式

    MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:

日志格式 含义
STATEMENT 基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中
ROW 基于行的日志记录,记录的是每一行的数据变更。(默认)
MIXED 混合了STATEMENTROW两种格式,默认采用STATEMENT,在某些特殊条件下回自动切换为ROW进行记录
1
show variables like '%binlog_format%'; 
  • 日志查看

    由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具 mysqlbinlog 来查看,具体语法如下:

    mysqlbinlog [参数选项] logfilename

    参数选项: -d 指定数据库名称,只列出指定的数据库相关操作。 -o 忽略掉日志中的 n 行命令。 -v 将行事件(数据变更)重构为SQL语句

  • 日志删除

    对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量磁盘空间,可以通过一下几种方式清理日志:

指令 含义
reset master 删除全部 binlog 日志,删除之后日志编号将从 binlog.000001重新开始
purge master logs to 'binlog.******' 删除 ****** 编号之前的所有日志
purge master logs before 'yyyy-mm-dd hh24:mi:ss' 删除日志为 yyyy-mm-dd hh24:mi:ss 之前产生的所有日志

注:也可以在mysql配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期将会自动删除。

1
show variables like '%binlog_expire_logs_seconds%';
Licensed under CC BY-NC-SA 4.0
皖ICP备20014602号
Built with Hugo
Theme Stack designed by Jimmy