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里面的内容就可以恢复数据了。

更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。
图片描述


zilu
1.3k 声望175 粉丝