《Mysql学习mysql二进制日志文件恢复数据库》要点:
本文介绍了Mysql学习mysql二进制日志文件恢复数据库,希望对您有用。如果有疑问,可以联系我们。
二进制日志的文件的作用 MYSQL学习
mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复.MYSQL学习
二进制日志文件的弊端 MYSQL学习
二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件,MYSQL学习
所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间.MYSQL学习
使用二进制日志文件恢复数据库MYSQL学习
开启日志文件 MYSQL学习
mysql默认是不开启日志文件的功能的,需要我们手动开启.操作如下:MYSQL学习
1、 打开mysql安装目录\my.ini(windows系统是my.ini文件,linux是my.cnf文件).MYSQL学习
2、 找到[mysqld]这个标签,在此标签下面一行,添加语句:log-bin=binary-log.上面语句中,log-bin说明要开启二进制日志文件,binary-log是二进制日志文件的名字.MYSQL学习
(测试的时候我设置的:log-bin=d:/mysql_log/logbin_ouyang.log)MYSQL学习
3、 重启mysql服务.可以在mysql安装目录\data 文件夹下看到“binary-log.数字编号”文件,MYSQL学习
如binary-log.000001.以后每重启一次mysql服务,都会重新生成二进制日志文件,MYSQL学习
文件名中的数字编号依次递增.MYSQL学习
(你的上一步给出的文件名,加了个序号 还有一个总的文件 index文件 如图1:)MYSQL学习
MYSQL学习
恢复数据库 MYSQL学习
使用日志文件恢复数据库必须要有一个数据库备份(只要是在二进制日志文件功能开启之后备份的就行).恢复数据库时,可以通过时间恢复,也可以通过操作点恢复.MYSQL学习
1、通过时间恢复办法如下:MYSQL学习
如果我在2011-04-02 00:00:00时刻开启了二进制日志文件功能,并备份了数据库文件.且在2011-04-02 12:00:00数据库发生异常,需要恢复到2011-04-02 10:00:00.则操作如下:MYSQL学习
l 用备份将数据库回复到2011-04-02 00:00:00时候的状态.MYSQL学习
l 在命令行输入如下命令:MYSQL学习
MYSQL学习
mysqlbinlog --stop-date="你想要恢复的时间" 日志文件的目录\binary-log.000001 | mysql -u root Cp (D:\mysql_log>mysqlbinlog logbin_ouyang.000007 --stop-date="2011-10-23 15:05:00"|mysql -uroot -proot)
这样,系统会自动执行从二进制日志有记录开始截止到2011-04-02 10:00:00,用户所做过的所有操作.与stop-date对应的,还有start-date属性,可以设定执行记录的开始时间.也可以两个属性都设置.MYSQL学习
2、通过操作点恢复办法如下:MYSQL学习
在命令行中输入mysqlbinlog D:\binary-log.000003 > D:\log.txt,执行后打开log.txt,MYSQL学习
查看里面语句,可以发现:在每个操作之前,都会有一个独特的编号,如下红字显示:MYSQL学习
/*!*/; # at 450 /*编号450*/ #110402 15:31:50 server id 1 end_log_pos 529 Query thread_id=2 exec_time=0 error_code=0 SET TIMESTAMP=1301729510/*!*/; DROP TABLE `jwc`
此编号随着操作数增多而变大.和时间一样是一个标记,通过操作点恢复的语句如下:MYSQL学习
mysqlbinlog --stop-position="450" mysql安装目录\data\binary-log.000001 | mysql -u root CpMYSQL学习
这样,系统会自动执行二进制日志中编号最低的语句到编号450语句.MYSQL学习
与stop-position对应的,还有start-position属性,可以设定执行记录的开始编号.MYSQL学习
附:(你应该看看)MYSQL学习
1.0 mysqlbinlog 是mysql自带的一个日志操作工具!MYSQL学习
2.0 如果直接打开log文件 可能会是乱码,所以我们一般会:MYSQL学习
D:\mysql_log>mysqlbinlog logbin_ouyang.000003 >log_3.txt 复制下 然后用记事本打开!MYSQL学习
就可以清楚的看到 操作的编号了 或者说(行号)MYSQL学习
3.0 如果发生了错误的操作!如果可以的话!你应该立马停止数据库!然后恢复数据!MYSQL学习
4.0 如果只是去掉某一个语句,你可以选择恢复两次 ,如图:MYSQL学习
MYSQL学习
D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --stop-position=10625|mysql -uroot -proot D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --start-position=10843|mysql -uroo t Cproot
5.0 如果发生 Could not read entry at offset 1478: Error in log format or read error. 类似的错误!MYSQL学习
请检查你的编号是否正确!注意这个编号 不是一些编辑器显示的那个行号哦,# at 450 /MYSQL学习
经常delete 、update错了!所有给自己个文档!当然我也希望你永远的用不上这个文档 ! 周末愉快! (排版有的乱哈!多多原谅!)MYSQL学习
维易PHP培训学院每天发布《Mysql学习mysql二进制日志文件恢复数据库》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。