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
|