mysqlbinlog恢复增量备份数据

如果mysql-server启用了--bin-log选项,那么mysql在运行的时候会把执行的事件(事务,sql语句)记录到二进制文件中,在my.cnf文件中--bin-log可以指定二进制文件存储的位置。

而mysqlbinlog的用途是解析这些二进制文件,变成可读的文本文件。

mysqlbinlog binlog_files | mysql -u root -p

上面命令的意思是,mysqlbinlog把二进制文件解析,然后转给mysql程序处理。其实,mysqlbinlog解析二进制文件后,得到的就是mysql命令。

下面的语句是查看二进制文件的内容:

mysqlbinlog binlog_File | more

如果我们要把mysql的日志在mysql数据库上执行,我们可以用下面的方式:

mysqlbinlog binlog_file1 | mysql -u root -p

如果只有一个二进制文件的时候,这里是没有问题的,如果有多个二进制文件:

mysqlbinlog binlog_file1 | mysql -u root -p
mysqlbinlog binlog_file2 | mysql -u root -p

这样子分开执行可能会有问题。假设在binlog_file1中,有一个语句CREATE TEMPORARYTABLE, 而在binlog_file2中,使用了TEMPORARYTABLE, 这样可能会报表不在的错误。因为temporary表的生命周期是在连接的生命周期内。而上面两个命令,代表了两个数据库连接。
下面的方法可以避免上面的问题:

mysqlbinlog binlog_file1 binlog_file2 | mysql -u root -p

当然,我们也可以把二进制文件的解析结果放到同一个文件,然后再执行:

mysqlbinlog binlog_file1 > /tmp/backup.sql;
mysqlbinlog binlog_file2 >> /tmp/backup.sql;//在backup.sql后面追加
mysql -u root -p -e "/tmp/backup.sql";

恢复指定时间区间的数据

mysqlbinlog binlog_file --start-datetime="2016-09-09 00:00:00" --end-datetime="2016-10-10 00:00:00" | mysql -u root -p;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值