Home > Database > Mysql Tutorial > body text

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

WBOY
Release: 2016-06-01 13:31:06
Original
1053 people have browsed it

bitsCN.com

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解

 

增量备份过程

(1)配置My.cnf文件

(Windows系统下配置my.ini文件),启用二进制备份:

 

[sql] 

log-bin=D:/Program Files (x86)/MySQL/mylog/juelog  

在这里指定把备份文件放到哪个文件下。

 

(2)重启MySQL服务。

重启后,在所配置的文件目录下,将出现两个二进制的配置文件。

 

如图:

 

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

 

其中,juelog.index为备份文件的索引,指明有哪些备份文件;juelog.000001即为备份文件,存放用户对数据库的所有操作。

 

索引文件juelog.index中的内容如下:

 

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

 

(3)备份日志的自动更新

当对数据库进行相应的操作时,备份日志会发生相应的更新。这点可以从备份文件的时间上观察得到。

 

经检测,备份文件中会记录创建表的语句、删除表的语句、insert语句、delect语句、update语句等,而不会记录select语句。

 

(4)查看备份日志中内容

可以使用MySQL自带的mysqlbinlog程序,来查看备份文件中的内容。

 

进入cmd控制台,以:

 

[sql] 

mysqlbinlog 备份文件的路径  

的方式来查看备份文件中的内容。

 

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

 

通过上图可以看到,MySQL会把每一个操作的时间记录下来,同时分配一个位置position。

 

由此,我们可以根据时间或者位置来恢复数据库文件。

 

(5)按时间导出恢复日志。

[sql] 

mysqlbinlog --start-datetime="2013-08-11 23:00:00" --stop-datetime="2013-08-11 23:20:59" juelog.000001 -r Test2.sql  

 

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

 

以上操作即是把从2013-08-11 23:00:00到2013-08-11 23:20:59的所有操作都导入进Test2.sql中。

 

执行成功该语句后,在备份目录下即会生成Test2.sql文件。

 

其中,--start-datetime和--stop-datetime是可选的。

 

按位置导出日志与此同理。

 

(6)按位置进行恢复:

为了检验恢复效果,我们可以先将该表清空。

 

[sql] 

D:/Program Files (x86)/MySQL/mylog>mysqlbinlog --stop-position="102" juelog.0000  

01 | mysql -uroot -p  

Enter password: ***  

 

【SQL】MySQL之使用mysqlbinlog进行增量备份及恢复详解_MySQL

 

即可恢复表中内容。

 

按时间进行恢复与此同理。

 

(7)自动删除备份日志。

由于备份日志会占用大量的硬盘空间,所有我们需要定时的删除备份日志。

 

可以在my.cnf文件(Windows系统下配置my.ini文件)中设置EXPIRE_LOGS_DAYS参数。

 

例如:

 

[sql] 

EXPIRE_LOGS_DAYS=7  

则超过7天的备份日志会自动删除。

 

(8)开启binlog日志

[sql] 

mysql -hlocalhost -uroot -pjue -e "set global sql_log_bin=1";  

mysql -hlocalhost -uroot -pjue -e "show global variables like 'sql_log_bin'/G";  

执行结果:

 

[sql] 

*************************** 1. row ***************************  

Variable_name: sql_log_bin  

        Value: ON  

(9)禁止binlog日志

[sql] 

mysql -hlocalhost -uroot -pjue -e "set global sql_log_bin=0";  

mysql -hlocalhost -uroot -pjue -e "show global variables like 'sql_log_bin'/G";  

执行结果:

 

[sql] 

*************************** 1. row ***************************  

Variable_name: sql_log_bin  

        Value: OFF  

总结

Mysql数据库会以二进制形式,自动把用户对mysql数据库的操作,记录到备份文件中。

 

当用户希望恢复的时候,可以使用备份文件,来进行相应的恢复。

 

备份文件中会记录创建表的语句、删除表的语句、insert语句、delect语句、update语句等,而不会记录select语句。

 

增量备份记录的内容包括:

 

(1)操作语句本身。

 

(2)操作的时间。

 

(3)操作的位置。

 

bitsCN.com
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!