1、什么是binlog?
binlog是mysql的日志工具,binlog日志可以记录insert、update、delete的sql和操作时间。
因为log数据是二进制格式的,所以称为binary log,即binlog。
2、binlog有什么用?
排查数据问题
比如线上出现了莫名其妙的数据,就可以通过binlog来查询是什么sql导致了这个数据问题。当数据丢失时,可以恢复数据
当某段时间的数据丢失时,可以按照时间查询binlog日志,从而按照binlog恢复数据。做主从同步用
从库读取主库的binlog,来做主从同步。
3、如何启用和配置binlog(以linux系统为例)?
打开 /etc/mysql/my.cnf
文件
启用binlog
找到
#log_bin = /var/log/mysql/mysql-bin.log
去掉注释
log_bin = /var/log/mysql/mysql-bin.log
如此,就打开了binlog,同时设置了binlog的存储路径。
配置binlog
大多数时候,我们只需要记录mysql里某个database的binlog。
并且,由于binlog文件的不断扩充,log文件会变得很大,这样会占用你大量的磁盘空间,并且会使mysql特别慢。
为此,我们可以做如下配置:
binlog-do-db="test" #设置需要记录binlog的database
expire_logs_days=10 #设置log保留天数
max_binlog_size=100M #设置单个log文件的最大容量,超出100M后,会生成另一个binlog
由此,最基本的binlog设置完成了。
4、如何查看binlog
因为binlog是二进制格式的,所以不能直接查看,需要使用mysqlbinlog
去查看binlog日志。
mysqlbinlog /var/log/mysql/mysql-bin.000002
5、如何做数据恢复
假设我要按照binlog恢复 “2017-01-10 10:31:12" 之后的数据
需要执行命令如下:
mysqlbinlog --start-datetime="2017-01-10 10:31:12" /var/log/mysql/mysql-bin.000002 > sql.txt
执行上面的命令,我们就把“2017-01-10 10:31:12" 之后的 binlog 写入到了sql.txt里了,我们直接执行sql.txt里面的内容就可以恢复数据了。
更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。