网站数据库备份是每个认真做站的站长经常必须完成的功课之一,其中,数据量不是很多的小数据库我们可以进行每日完整备份,毕竟占用不了多少空间也花不了多长时间,但是当数据库文件非常庞大时,进行每日完整备份就比较麻烦和困难了,所以我们就可以采用每日增量备份和吗每周完整备份的方法。在此需要提醒的是,增量备份的原理是利用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(以此类推),继续恢复后来的数据。