时间:2021-05-24
二进制日志的文件的作用
mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复。
二进制日志文件的弊端
二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件,
所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间。
使用二进制日志文件恢复数据库
开启日志文件
mysql默认是不开启日志文件的功能的,需要我们手动开启。操作如下:
1、 打开mysql安装目录\my.ini(windows系统是my.ini文件,linux是my.cnf文件)。
2、 找到[mysqld]这个标签,在此标签下面一行,添加语句:log-bin=binary-log。上面语句中,log-bin说明要开启二进制日志文件,binary-log是二进制日志文件的名字。
(测试的时候我设置的:log-bin=d:/mysql_log/logbin_ouyang.log)
3、 重启mysql服务。可以在mysql安装目录\data 文件夹下看到“binary-log.数字编号”文件,
如binary-log.000001。以后每重启一次mysql服务,都会重新生成二进制日志文件,
文件名中的数字编号依次递增。
(你的上一步给出的文件名,加了个序号 还有一个总的文件 index文件 如图1:)
恢复数据库
使用日志文件恢复数据库必须要有一个数据库备份(只要是在二进制日志文件功能开启之后备份的就行)。恢复数据库时,可以通过时间恢复,也可以通过操作点恢复。
1、通过时间恢复方法如下:
如果我在2011-04-02 00:00:00时刻开启了二进制日志文件功能,并备份了数据库文件。且在2011-04-02 12:00:00数据库发生异常,需要恢复到2011-04-02 10:00:00。则操作如下:
l 用备份将数据库回复到2011-04-02 00:00:00时候的状态。
l 在命令行输入如下命令:
mysqlbinlog --stop-date="你想要恢复的时间" 日志文件的目录\binary-log.000001 | mysql -u root –p(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属性,可以设定执行记录的开始时间。也可以两个属性都设置。
2、通过操作点恢复方法如下:
在命令行中输入mysqlbinlog D:\binary-log.000003 > D:\log.txt,执行后打开log.txt,
查看里面语句,可以发现:在每个操作之前,都会有一个独特的编号,如下红字显示:
;# at 450 #110402 15:31:50 server id 1 end_log_pos 529 Query thread_id=2 exec_time=0 error_code=0SET TIMESTAMP=1301729510;DROP TABLE `jwc`此编号随着操作数增多而变大。和时间一样是一个标记,通过操作点恢复的语句如下:
mysqlbinlog --stop-position="450" mysql安装目录\data\binary-log.000001 | mysql -u root –p
这样,系统会自动执行二进制日志中编号最低的语句到编号450语句。
与stop-position对应的,还有start-position属性,可以设定执行记录的开始编号。
附:(你应该看看)
1.0 mysqlbinlog 是mysql自带的一个日志操作工具!
2.0 如果直接打开log文件 可能会是乱码,所以我们一般会:
D:\mysql_log>mysqlbinlog logbin_ouyang.000003 >log_3.txt 复制下 然后用记事本打开!
就可以清楚的看到 操作的编号了 或者说(行号)
3.0 如果发生了错误的操作!如果可以的话!你应该立马停止数据库!然后恢复数据!
4.0 如果只是去掉某一个语句,你可以选择恢复两次 ,如图:
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 –proot5.0 如果发生 Could not read entry at offset 1478: Error in log format or read error. 类似的错误!
请检查你的编号是否正确!注意这个编号 不是一些编辑器显示的那个行号哦,# at 450 /
经常delete 、update错了!所有给自己个文档!当然我也希望你永远的用不上这个文档 ! 周末愉快!(排版有的乱哈!多多包涵!)
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
二进制日志二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用:1、恢复(recovery)2、复制(replication)二进制日志的启动:
例如,在创建新表或更新现有表上的数据时,这些事件将存储在mysqlbinlog中,也就是MySQL数据库的二进制日志。二进制日志在MySQL复制中非常有用,主服
1、将文件以二进制流的格式写入数据库首先获得文件路径,然后将文件以二进制读出保存在一个二进制数组中,与数据库建立连接,在SQL语句中将二进制数组赋值给相应的参数
binlog是二进制日志文件,用于记录mysql的数据变更,数据在恢复的时候binlog日志能起到很大的作用。mysql的主从复制就是利用的binlog原理1、
又叫做主从复制,是通过二进制日志文件完成的,注意:mysql数据库的版本,两个数据库版本要相同系统环境:主服务器masterIP:192.168.0.88从服务