(1) 如果备份了,就好解决了。略。
(2)如果日志打开,使用mysqlbinlog来恢复。
mysqlbinlog工具的使用,大家可以看MySQL的帮助手册。里面有详细的用,
在这个例子中,重点是--start-position参数和--stop-position参数的使用。
•--start-position=N
从二进制日志中第1个位置等于N参量时的事件开始读。
•--stop-position=N
从二进制日志中第1个位置等于和大于N参量时的事件起停止读。
OK,现在开始,要启动二进制日志记录,
要先在my.cnf/my.ini文件的mysqld里添加
log-bin=日志名
在这里,偶是的设置是log-bin=liangck
然后再启动mysql服务,因为偶是用windows系统,
所以执行netstartmysql命令即可。
然后在一测试数据库里,创建一个表,并添加记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | mysql> create table test(id int auto_increment not null primary key ,
val int ,data varchar (20)); mysql> insert into test(val,data) values (10, 'liang' ); QueryOK,1rowaffected(0.03sec) mysql> insert into test(val,data) values (20, 'jia' ); QueryOK,1rowaffected(0.08sec) mysql> insert into test(val,data) values (30, 'hui' ); QueryOK,1rowaffected(0.03sec) mysql>flushlogs; --产生第二个日志文件 QueryOK,0 rows affected(0.09sec) mysql> insert into test(val,data) values (40, 'aaa' ); QueryOK,1rowaffected(0.05sec) mysql> insert into test(val,data) values (50, 'bbb' ); QueryOK,1rowaffected(0.03sec) mysql> insert into test(val,data) values (60, 'ccc' ); QueryOK,1rowaffected(0.03sec) mysql> delete from test where id between 4 and 5; --删除记录 QueryOK,2 rows affected(0.05sec) mysql> insert into test(val,data) values (70, 'ddd' ); QueryOK,1rowaffected(0.03sec) mysql>flushlogs; --产生第三个文件文件 QueryOK,0 rows affected(0.11sec) mysql> insert into test(val,data) values (80, 'dddd' ); QueryOK,1rowaffected(0.05sec) mysql> insert into test(val,data) values (90, 'eeee' ); QueryOK,1rowaffected(0.03sec) mysql> drop table test; --删除表 QueryOK,0rowaffected(0.05sec) |
――――――――――――――――――――――――――――――――――
OK,现在测试数据已经建好了,要求是什么呢?
就是将test表的数据全部恢复出来。
先用mysqlbinlog工具将日志文件生成txt文件出来分析。
F:ProgramFilesMySQL_Datadatalog>
mysqlbinlogliangck.000001>G: