mysql新说·记录数据轨迹的binlog

一、什么是binlog?

binlog是mysql的日志工具,binlog日志能够记录insert、update、delete的sql和操做时间。mysql

由于log数据是二进制格式的,因此称为binary log,即binlog。linux

二、binlog有什么用?

  • 排查数据问题
    好比线上出现了莫名其妙的数据,就能够经过binlog来查询是什么sql致使了这个数据问题。sql

  • 当数据丢失时,能够恢复数据
    当某段时间的数据丢失时,能够按照时间查询binlog日志,从而按照binlog恢复数据。工具

  • 作主从同步用
    从库读取主库的binlog,来作主从同步。spa

三、如何启用和配置binlog(以linux系统为例)?

打开 /etc/mysql/my.cnf文件日志

启用binlog

找到code

#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特别慢。
为此,咱们能够作以下配置:it

binlog-do-db="test" #设置须要记录binlog的database
expire_logs_days=10 #设置log保留天数
max_binlog_size=100M #设置单个log文件的最大容量,超出100M后,会生成另外一个binlog

由此,最基本的binlog设置完成了。

四、如何查看binlog

由于binlog是二进制格式的,因此不能直接查看,须要使用mysqlbinlog去查看binlog日志。

mysqlbinlog /var/log/mysql/mysql-bin.000002

五、如何作数据恢复

假设我要按照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里面的内容就能够恢复数据了。

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

相关文章
相关标签/搜索