MySQL数据库增量备份与恢复的方法及命令

网站数据库备份是每个认真做站的站长经常必须完成的功课之一,其中,数据量不是很多的小数据库我们可以进行每日完整备份,毕竟占用不了多少空间也花不了多长时间,但是当数据库文件非常庞大时,进行每日完整备份就比较麻烦和困难了,所以我们就可以采用每日增量备份和吗每周完整备份的方法。在此需要提醒的是,增量备份的原理是利用MySQL的二进制日志,所以在操作之前必须启用二进制日志功能。

一、备份数据库

1、以每周日凌晨4点进行完整备份为例:

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > fullbackup_sunday_4_AM.sql
在sql文件中我们会看到两行:

– Position to start replication or point-in-time recovery from

– CHANGE MASTER TO MASTER_LOG_FILE=’bin-log.000002′, MASTER_LOG_POS=107;

注意第二行的信息很重要,即备份后所有的更改将会保存到bin-log.000002这个二进制文件中。

2、然后我们再以周一下午11点进行增量备份为例:

mysqladmin flush-logs

命令执行完毕后将产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了自周日下午11点进行完整备份后到现在的所有更改,我们只需要把这个文件放到安全的地方即可。

然后周二我们继续增量备份,还是执行上面的命令,这时我们再将bin-log.000003文件保存。

二、恢复数据库

那我们如何通过上面的文件恢复数据呢?

我们以周三中午12点出现故障为例,这时需要恢复数据,我们首先导入星期天的完整备份:

mysql < fullbackup_sunday_4_AM.sql

接着我们导入星期一和星期二的增量备份:

mysqlbinlog bin-log.000002 bin-log.000003 | mysql

到此为止我们已经恢复了所有备份了的数据,如果需要,我们还可以找到bin-log.000004(以此类推),继续恢复后来的数据。

本站(山顶洞网上部落格 ShanDingDong.Net)所有原创文章版权所有。 请尊重作者劳动成果,如需使用请直接在下方留言申请,谢谢。 未经许可严禁任何形式的引用和转载,违者必究!

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注