我目前正在通过每天执行一次 mysqldump 并使用 logrotate 来保留 mysqldump 的最后 7 天来保持我的数据库的每日备份。
我想改进这个备份过程,以保持每天 7 次备份、每周 3 次备份和每月 12 次备份。
我发现这篇文章解释了如何使用 logrotate 进行操作:https ://web.archive.org/web/20070625054821/http://hotcoding.com/os/sysadmin/35751.html
但是我使用dateext
logrotate 选项来命名我的备份文件,所以我不能使用这个解决方案。
如何使用 logrotate 和dateext
选项进行每日、每周和每月备份?
查看脚本 AutoMySQLBackup https://sourceforge.net/projects/automysqlbackup/
这是一个使用 mysqldump 备份一个/所有数据库的好脚本(假设这些是 mysql 数据库)
nodateext
您可以向数据库 logrotate conf添加选项。您还可以在 postrotate 部分放置一些脚本,将您的每日和每周每月备份复制/移动到新位置,这将防止 logrotate 将其删除。
另一种解决方案是编写简单的 shell 脚本来执行和轮换备份并将其放入 cron。在脚本中使用的一些有用的命令
为什么要进行这种备份?对我来说,这种策略毫无意义。Mysqldump 只创建完整的数据库备份,因此您不需要每周/每月备份。
当您使用完整/差异/增量备份时,每天、每周和每月备份是必要的。在数据库损坏的情况下,您只需要很少的最后备份。
可能 logrotate 不是执行此操作的最佳工具。
我已经使用 mysqldump 和rsnapshot很长时间来达到完全相同的要求。
除了 mysqldump,您还可以考虑使用xtrabackup。
这是它的另一个手工制作版本,它更简单且易于配置。https://github.com/jeevandongre/backup-restore