欢迎光临
我们一直在努力

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

 

未经允许不得转载:小罗同学 » mysqlbinlog数据恢复

分享到:更多 ()