mysql 使用二进制日志文件恢复数据库
mysql 使用二进制日志文件恢复数据库
在心中一直有个东西梗着,那就是mysql利用二进制日志文件恢复数据库,今天下决心解决这个问题,在网上查了些资料,然后自己的物理机上测试总是失败,开始一直怀疑是网上说的不正确,最后想起来自己的数据库是从5.0.1升级到5.1.49的,也许是因为升级的原因导致日志文件无法恢复,出现下面的错误
最后没有办法,在虚拟机上面新装个mysql 5.1.49的数据库进行测试,先启用日志功能:log-bin=bin_log,然后配置假定添加删除相关数据,模拟测试环境(新建表,添加数据,删除数据,添加数据,删除表)
use test; create table test(id int auto_increment not null primary key ,val int ,data varchar (20)); insert into test(val,data) values (10, 'liang' ); insert into test(val,data) values (20, 'jia' ); insert into test(val,data) values (30, 'hui' ); flush logs; insert into test(val,data) values (40, 'aaa' ); insert into test(val,data) values (50, 'bbb' ); insert into test(val,data) values (60, 'ccc' ); delete from test where id between 4 and 5; insert into test(val,data) values (70, 'ddd' ); flush logs; insert into test(val,data) values (80, 'dddd' ); insert into test(val,data) values (90, 'eeee' ); drop table test; |
得到日志文件如下:
执行如下命令(dos要进入日志文件所在目录中)把二进制文件转化为记事本文件,方便查看:
mysqlbinlog bin_log.000001 >c:\1.txt mysqlbinlog bin_log.000002 >c:\2.txt mysqlbinlog bin_log.000003 >c:\3.txt |
mysqlbinlog bin_log.000001 | mysql -uroot -p4020894 mysqlbinlog bin_log.000002 --stop-pos=861 | mysql -uroot -p4020894 mysqlbinlog bin_log.000002 --start-pos=965 | mysql -uroot -p4020894 mysqlbinlog bin_log.000003 --stop-pos=556 | mysql -uroot -p4020894 |
执行后的结果如:
上面语句相关说明:
1)stop-pos=861表示执行到861行停止,具体阅读2.txt文件(这里体现了二进制文件转化为文本文件的价值)
2)start-pos=965表示执行从965行开始
其他操作
mysqlbinlog bin_log.000001
--读取日志文件在dos上显示
mysqlbinlog bin_log.000002
--stop-datetime="2010-08-19 14:49:39" |mysql -uroot -p4020894--基于停止时间点的恢复
mysqlbinlog bin_log.000001
--start-datetime="2010-08-19 14:48:25" |mysql -uroot -p4020894--基于开始时间点的恢复
mysqlbinlog bin_log.000001
--start-datetime="2010-08-19 14:47:28" --stop-datetime="2010-08-19 14:48:41"|mysql -uroot -p4020894--基于开始与停止时间点的恢复
mysqlbinlog bin_log.000001 bin_log.000002
--start-datetime="2010-08-19 14:47:28" --stop-datetime="2010-08-19 14:50:13" |mysql
目录 返回
首页