每日每周和每月数据库备份与logrotate?

我目前通过每日执行mysqldump并使用logrotate保留mysqldump的最后7天来保持数据库的每日备份

我想改进这个备份过程,以保持7日备份,3每周备份和12每月备份。

我发现这篇文章解释了如何使用logrotate进行修改: https ://web.archive.org/web/20070625054821/http: //hotcoding.com/os/sysadmin/35751.html

但是我使用dateext logrotate选项来命名我的备份文件,所以我不能使用这个解决scheme。

我如何使用logrotate和dateext选项来进行每日,每周和每月的备份?

查看脚本AutoMySQLBackup http://www.debianhelp.co.uk/mysqlscript.htm

这是一个很好的脚本来备份一个/所有数据库,使用mysqldump(假设这些是mysql数据库)

你可以添加nodateext选项到你的数据库logrotate conf。

您也可以在postrotate部分放置一些脚本,将您的每日和每周每月备份复制/移动到新的位置,这将防止通过logrotate删除它。

另一个解决scheme是编写简单的shell脚本来执行备份并将其转换为cron。 一些有用的命令在脚本中使用

 date +%u - day of week date +%d - day of month find /path -type f -daystart -ctime +30 -exec rm -f '{}' \; - remove files older than 30 days 

为什么你想要这种备份? 对我来说,这个状态毫无意义。 mysqldump只创build完整的数据库备份,所以你不需要每周/每月的备份。

使用完整/差异/增量备份时,每日,每周和每月备份是必要的。 在数据库损坏的情况下,只需要最后几次备份。

可能logrotate不是最好的工具来做到这一点。

我已经使用mysqldump和rsnapshot很长一段时间来达到完全相同的要求。

而不是mysqldump,你也可以考虑使用xtrabackup 。

这是另一个手工制作的版本,它更加简单,易于configuration。 https://github.com/jeevandongre/backup-restore