Mysql增量备份

 


       Last modified2013-05-03 22:09:26

****************************************

 

 

对于数据量较大的数据库,一次全备份可能要花上好几个小时,所以在日常应用中全备份一般同增量备份一起使用。

Mysql提供了增量备份的工具:mysqlbinlog.exe (大家可以在mysqlbin目录下找到)。

下面来说说如何进行mysql增量备份:

 

1, 打开my.ini配置文件,在服务器配置区加上:

log-bin=d:/binlog/mybinlog

其中,d:/binlog/mybinlog 是一个自定义目录,用来存放增量备份文件,mybinlog是对生成文件的命名。

 

2,重启mysql,在d:/binlog/下会生成两个文件分别是:mybinlog.**代表不同的扩展名,其中“.index”是增量备份的索引文件,“.000001”是增量 备份文件。启动增量备份后,每次在数据库进行DML操作,备份文件都会更新一次。


Mysql增量备份_第1张图片
 

 

好了,现在增量备份已经配置好了。现在在数据库中创建一个临时表,插入一条数据,然后删除表。为一会儿恢复这张表准备:

 


Mysql增量备份_第2张图片
 

 

3, 生成的增量备份文件都是二进制文件,需要用mysql提供的mysqlbinlog 进行查看:

进入控制台输入:mysqlbinlog  d:\binlog\mybinlog.000001


Mysql增量备份_第3张图片
 

Mysql的增量备份为我们提供了两种备份恢复方式:按照时间点或者位置

按照时间点:

指定恢复结束时间:

mysqlbinlog --stop-datetime=0000-00-00 00:00:00  d:/binlog/mylog.000001  |  mysql -uroot -p 

指定恢复开始时间:--start-datetime

按照位置:

其实和按照时间点类似,只是传递的参数改一下:

指定恢复结束位置:--stop-position=2433

指定恢复开始位置:--start-position=2433

当然mysql也支持某个时间段或者位置段的恢复:

mysqlbinlog --start-datetime=2013-01-13 00:03:00--stop-datetime=2013-01-14 00:34:55  d:/binlog/mylog.000001 | mysql -uroot -p 

 

如果我们要恢复原来表中删除的数据可以这样做,在控制台输入:



 

这是来看一看数据库里面是不是已经恢复了呢:


Mysql增量备份_第4张图片
 

 

好了演示结束,看来还是很好用的,我用的是按照位置来恢复,按照时间恢复就不演示了。

 

 

关于增量备份文件的维护:

Mysql控制台下执行一下指令可以清除二进制日志文件:reset master;

my.ini中可以设置日志过期天数过期的日志会被自动删除,有利于减少我们管理日志的工作量:

expire_logs_day=9

这里设定日志可以保存9天,9天之后过期的日志将被自动删除。

 

在日常应用中可以将自动全备份和增量备份结合在一起使用,例如,每周日进行一次全备份,将增量备份的日志清理时间设置为7天以上。如果那天数据库出了问题,可以全备份和增量备份配合恢复。

 

       关于mysql的自动全备份可以参看我的另外一篇日志: 使用java实现自动备份mysql数据库

 

你可能感兴趣的:(mysql,增量备份)