1、先进行二进制文件的切割
因为是在线恢复,所以二进制文件在恢复的时候也会将恢复过程写入到里面,所以,先进行二进制文件的切割
shell >mysqladmin -h 127.0.0.1 -uroot -poracle flush-log
可以看到,原来只有mysqlbin_test.000001、mysqlbin_test.000002
、mysqlbin_test.000003,切割之后有了mysqlbin_test.000004,这样在恢复的时候就不会影响到之前的二进制文件(原因:因为通过备份文件只能恢复到备份时间点的数据,但是,从备份时间点到数据损坏之前的数据没有办法进行恢复的,所以我们采用切割的方式将二进制文件切割,再将原来的二进制文件通过mysqlbinlog转换成sql文件,更改sql文件中的信息使得更新到损坏时间点之前的数据情况)
2、通过备份文件进行恢复
shell >mysql -h 127.0.0.1 -uroot-poracle test123 </opt/test123_bak.sql
3、检查数据是否进行恢复(我们主要是想恢复test123中的test表中的内容)
shell> mysql -h 127.0.0.1 -uroot-poracle -e “select * from test123.test”
4、通过mysqlbinlog将二进制文件进行转换,进入到data目录
shell >mysqlbinlog -d testmysqlbin_test.000001 >bin_test01.sql
其中-d是指定涉及到的表
shell >mysqlbinlog -d testmysqlbin_test.000002 >bin_test02.sql
shell >mysqlbinlog -d testmysqlbin_test.000003 >bin_test03.sql
5、如果有错误操作,将最新的二进制sql文件即bin_test03.sql中的错误操作sql语句删除vi bin_test03.sql,一般应该在最后。之后,进行恢复
vi bin_test03.sql
6、进行二进制文件恢复
mysql -h 127.0.0.1 -u root -poracletest123 </data/bin_test01.sql
mysql -h 127.0.0.1 -u root -poracletest123 </data/bin_test02.sql
mysql -h 127.0.0.1 -u root -poracletest123 </data/bin_test03.sql
本文出自 “技术博” 博客,谢绝转载!
原文地址:http://hostman.blog.51cto.com/6303208/1673523