mysqlbinlog数据恢复
mysql数据恢复我们最常用的就是定时保存sql文件,如果发生意外,就把sql还原回去,但是在意外到备份之间产生的数据则会丢失,那么我们怎么把这部分时间的数据恢复呢?
这时候,我们就可以利用mysql为我们提供的binlog日志了
我们数据库demo1中有两个表
其中product表中有3条测试数据
我们将数据库备份为demo1.sql 并创建新的binlog
mysqldump -uroot -proot demo1 -l -f > demo1.sql
生成了新的binlog 同时新增了几条新的数据
data> mysql-bin.000002
这个时候我们做一个误操作,把表删除了.. 然后还原数据
1、先还原数据库备份数据 也就是 demo1.sql
~> mysql -uroot -proot demo1 < demo1.sql
还差几条新增的数据,通过binlog还原
~> mysqlbinlog --no-defaults ../data/mysql-bin.000002 | mysql -uroot -proot demo1
ok我们还原回来了,当然这样暴力的操作binlog日志是因为我在删表操作的时候先创建了新的binlog
mysql> flush logs
在新的binlog中找到删除前新增的数据 ,为了查看方便 ,我们将binlog中的数据导出到txt
~>mysqlbinlog --no-defaults ../data/mysql-bin.000002 > demo2.txt
在记录中 我们可以看到我们新增的数据是从at 3246 到 at 4114 结束,那么我们就可以通过开始于结束的参数来实现精确恢复
mysqlbinlog --no-defaults ../data/mysql-bin.000002 --start-position="3246" --stop-position="4114" | mysql -uroot -proot demo1