二进制日志:对数据库的恢复还原是非常有用的。
在my.cnf中开启二进制日志,
server-id = 1
log-bin=mysql-bin
查看是否开启:
msyql中运行 :show variables like "%bin%";
得到信息:log-bin on
则开启成功!
查看二进制日志:
show master status;
查看二进制日志文件:show master logs;
一些相关命令:
flush logs //刷新,生成一个新的二进制日志bin-log文件。
reset master //清空所有的bin-log日志,只有一个000001的bin-log文件
测试:有一张表t1,有二条数据1,2. 【对应的二进制日志为000001】
先备份:msyqldump -uroot -p123456 test -l -F>/tmp/test.sql
【-l 锁表,防止数据库的增删改操作,-F重新生成新的二进制日志,在备份的时候一定要记得刷新生成新的二进制日志】
此时:show master status;可看到新的二进制日志为000002文件。
插入数据:insert into t1 values(3),(4);
再show master status;可以看到position的值改变了,比如为288。
也可以查看bin-log文件日志,也可以看到里面的操作情况和他的position:
Mysqlbinlog --no-defaults mysql-bin.000002;
现在突然:数据库t1被黑被删掉。用二进制日志恢复。
1.还原备份的数据:
/bin/mysql -uroot -p123456 test 此时得到的是1,2二条数据,后来插入的3,4数据没有恢复。 2.二进制恢复数据: Mysqlbinlog --no-defaults --stop-position="288" mysql-bin.000002 | /lamp/bin/mysql -uroot -p123456 test //--stop-position="288"表示恢复到 288这个位置即可,因为上面插入数据后他的position是288,所以恢复到288即可。 现在查看数据。就得到4条记录了。数据还原成功! 一些参数: --stop-position ="288" //恢复到二进制日志到288的位置。 --start-position="XXX" //开启恢复的位置 --stop-date ="2010-21 12:11:50" --start-date ="2011-21 12:11:50"