MySQL命令-- mysqlbinlog

MySQL的命令中,有一个挺有用的命令:mysqlbinlog,它主要用于解析mysql的binlog日志文件,它主要记录对数据库有更新的操作,如增、删、改,它是记录所有库所有表的变化,不能单独记录一个库一个表的日志。如下为数据库的binlog文件:

binlog日志文件用cat是无法查看的,只能通过mysqlbinlog命令 binlog文件名查看:

上面说到,binlog记录的是所有库所有表的日志,基本说明:

1. #at 154 : 事件的起始点

2. #171002 17:12:38 server id 1 end_log_pos 313 : 语句执行的时间,对于复制,这个时间会传输到从库。server id是产生这个事件的MySQL实例的server id参数值。end_log_pos指下一个事件的起始点,其实就是这个事件的终点+1

3. Query thread_id=10 exec_time=0 error_code=0 : thread_id指执行这个SQl语句的线程ID, exec_time在主从库有不同的含义,在主库中,等于执行这个事件所花费的时间,在从库中,等于这个事件结束执行的时间点减去在主库上开始执行的时间点,这个差异可以表征主从之间的滞后程度。error_code为错误状态,等于0表示状态正常。



现在需要恢复指定库,可以加-d参数:

mysqlbinlog -d {database_name} > /opt/{database_name}.sql

这样,导出的sql语句文件就只有指定数据库文件的binlog了。


上面binlog文件中,可以看到有at {number}这类数据,这就是文件位置点,因此,可以指定位置点恢复指定sql语句(位置点需要实际存在,不能胡乱指定位置点,因为位置是唯一的):

mysqlbinlog mysql-bin.000004 --start-position=154 --stop-position=219 -r pos.sql

这里的位置点为左闭右开,即位置点包含开始点,而不包含结束点。

除了可以指定起止位置,还可以指定起止时间:

mysqlbinlog mysql-bin.000004 --start-datetime='2017-10-10 21:00:00' --stop-datetime='2017-10-11 21:00:00' -r time.sql


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值