-
介绍
二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。
作用:
- 灾难时的数据恢复;
- MySQL的主从复制。在MySQL8.x版本中,默认二进制日志是开启着的。涉及到的参数如下
-
日志格式
MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:
日志格式 | 含义 |
---|---|
STATEMENT |
基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中 |
ROW |
基于行的日志记录,记录的是每一行的数据变更。(默认) |
MIXED |
混合了STATEMENT 和ROW 两种格式,默认采用STATEMENT ,在某些特殊条件下回自动切换为ROW 进行记录 |
|
|
-
日志查看
由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具
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配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期将会自动删除。
|
|