什么是二进制日志(binlog):记录了所有的ddl和dml语句,但是不包括查询类的
二进制日志的作用:1.灾难恢复,2.mysql主从复制
查看二进制日志状态
show variables like '%log_bin%';
在mysql8中默认是开启的
| log_bin | ON |
# 代表着二进制是开启的状态
| log_bin_basename | /var/lib/mysql/binlog |
# 二进制日志存放的路径,把二进制日志存放在什么位置,当存放满了或者格式改变了,他就会增加文件存放
| log_bin_index | /var/lib/mysql/binlog.index |
# 记录着索引文件,把文件的索引就记录在这里面了
二进制日志日志格式
mysql服务器中提供了多种格式来记录二进制格式:
statement——基于SQL语句的日志记录,记录的是sql语句,对数据进行修改的SQL都会记录在日志文件中
row——基于行的日志记录,记录的是每一行的数据变更。(默认)
mixed——混合了statement和row两种格式,默认采用statement,在某些特殊情况下会自动切换为row进行记录。
show variables like '%binlog_format%';
变换2进制日志文件格式
在/etc/my.cnf中添加
binlog_format=STATEMENT
这样就可以了
然后去重启mysql服务
修改成功,当我们修改了文件的格式,那么二进制binlog文件会增加
可以使用 mysqlbinlog命令去查看内容
日志清理
每天都会产生很多的二进制数据,如果不即时清理,会占用大量的空间
reset maser——删除全部binlog日志,删除之后日志编号将从binlog.000001重新开始
purge master logs to ‘binlog.******’———删除指定编号之前的所有日志
purge master logs before ‘yyyy-mm-dd hh24:mi:ss’——删除日志为指定之前产生的所有日志
此外我们还可以在设置mysql自动删除二进制
show variables like '%binlog_expire%';
查看一下
2592000秒=30天
也就是说30天以后就删除了
如果想修改的话可以去配置文件里修改