binlog是mysql的日志工具,binlog日志能够记录insert、update、delete的sql和操做时间。mysql
由于log数据是二进制格式的,因此称为binary log,即binlog。linux
排查数据问题
好比线上出现了莫名其妙的数据,就能够经过binlog来查询是什么sql致使了这个数据问题。sql
当数据丢失时,能够恢复数据
当某段时间的数据丢失时,能够按照时间查询binlog日志,从而按照binlog恢复数据。工具
作主从同步用
从库读取主库的binlog,来作主从同步。spa
打开 /etc/mysql/my.cnf
文件日志
找到code
#log_bin = /var/log/mysql/mysql-bin.log
去掉注释图片
log_bin = /var/log/mysql/mysql-bin.log
如此,就打开了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是二进制格式的,因此不能直接查看,须要使用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里面的内容就能够恢复数据了。
更多精彩,请关注公众号“聊聊代码”,让咱们一块儿聊聊“左手代码右手诗”的事儿。