关于MySQL的日志管理(binlog)
一、查看binlog的启用状态
最常用的mysql版本是5.7,默认不开启binlog,可以在登录mysql之后,利用以下命令查看当前的binlog启用状态:
mysql > show variables like "%log_bin%";
图中显示“ON”,表示已开启binlog,刚安装完mysql5.7之后,默认是“OFF”
二、开启binlog
修改my.cnf配置文件:
vim /etc/my.cnf
在mysqld节点中添加以下参数:
#设置唯一id server-id=1 #开启bin-log,产生的bin-log文件名即为bin-log.* log-bin=/mnt/logs/mysql/mysql-bin #指定bin-log为row类别(5.7默认),其他两种是statement、mixed binlog_format=row #对指定的数据库开启bin-log,这里是对jw_base数据库开启bin-log服务 binlog-do-db=jw_base
#超过10天的日志文件会被清除
expire_logs_days=10
#默认大于100M时创建新的binlog文件,但出现大事务时可能会超过这个限制
max_binlog_size=100M
上面的参数中,将binlog的保存位置设置为:/mnt/logs/mysql
这个目录要提前创建好,并且对其进行授权:
chown -R mysql.mysql /mnt/logs/mysql
重启mysql服务,使得更改后的配置生效:
#重启服务
systemctl restart mysqld
#停止服务
systemctl stop mysqld
#启动服务
systemctl start mysqld
#查看服务状态
systemctl status mysqld
三、查看日志
MySQL重启后,不出意外的话,就会在指定的位置生成了第一份binlog日志文件:mysql-bin.000001
可通过以下命令查看该日志的内容:
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
还可以使用时间范围进行过滤:
mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime='2021-01-01 00:00:00' --stop-datetime='2021-02-01 00:00:00' mysql-bin.000001 | more
如果日志内容太多,不便于查阅,还可以将结果导出到文件中:
mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-datetime='2021-01-01 00:00:00' --stop-datetime='2021-02-01 00:00:00' mysql-bin.000001 > /tmp/binlog001.sql
四、临时关闭binlog
在开启binlog的情况下,当出现大更新量的操作时,日志文件会快速增长,有时会达到很恐怖的程度
因此在进行某些大量更新之前,可以临时关闭binlog:
mysql > set sql_log_bin=0;
待更新完成后,重新打开binlog:
mysql > set sql_log_bin=1;
版权声明: 本文为博主 网无忌 原创文章,欢迎转载,但请务必标注原文链接。