第二步:再次执行之前的更新语句
mysql -uroot -p1234
use db01;
update stu set age = age +1 where id =1;
第三步:再次查看这个新生成的二进制日志表的内容
#进入到二进制日志文件存放的位置
cd /var/lib/mysql
#可以看到此目录下有这个日志文件
ll
#查看此二进制日志文件
#不需要加-v,因为是STATEMENT它本身记录的就是sql语句
#效果:可以看到此时记录的就是sql语句而不是每一行的数据变化
mysqlbinlog binlog.000005;
1.2.4 删除
对于比较繁忙的业务系统,每天生成的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的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除。
mysql -uroot -p1234
#查看系统变量,在mysql命令行中执行
#单位是秒,默认过期时间为30天,到期之后会自动删除
show variables like '%binlog\_expire\_logs\_seconds%';
测试:
客户端1:
mysql -uroot -p1234
#删除000002之前的日志文件,不包含000002
purge master logs to 'binlog.000002';
客户端2:
cd /var/lib/mysql
#可以看到二进制日志文件和索引文件
ll
1.3 查询日志
查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下, 查询日志是未开启的。
mysql -uroot -p1234
#检查参数查看开关是否开启
#可以看到默认是关闭的以及日志文件所处位置和文件名
show variables like '%general%';
如果需要开启查询日志,可以修改MySQL的配置文件 /etc/my.cnf 文件,添加如下内容:
vim /etc/my.cnf
#该选项用来开启查询日志 , 可选值 : 0 或者 1 ; 0 代表关闭, 1 代表开启
general_log=1
#设置日志的文件名 , 如果没有指定, 默认的文件名为 host\_name.log
general_log_file=mysql_query.log
#重启mysql服务
systemctl restart mysqld.service
#查看这个目录下是否会生成此日志文件
cd /var/lib/mysql/
ll