ben*_*ail 5 mysql linux backup logrotate
我目前通过执行每日 mysqldump 并使用 logrotate 保留 mysqldump 的最后 7 天来保持我的数据库的每日备份。
我想改进这个备份过程,以保留 7 次每日备份、3 次每周备份和 12 次每月备份。
我发现这篇文章解释了如何使用 logrotate 执行此操作:https ://web.archive.org/web/20070625054821/http: //hotcoding.com/os/sysadmin/35751.html
但是,我使用dateextlogrotate 选项来命名我的备份文件,因此我无法使用此解决方案。
如何使用 logrotate 和dateext选项进行每日、每周和每月备份?
您可以将nodateext选项添加到数据库 logrotate conf。
您还可以在 postrotate 部分放置一些脚本,将每日和每周的每月备份复制/移动到新位置,这将防止 logrotate 删除它。
另一个解决方案是编写简单的 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
Run Code Online (Sandbox Code Playgroud)
为什么要进行这种备份?对我来说,这种策略毫无意义。Mysqldump 仅创建完整数据库备份,因此您不需要每周/每月备份。
当您使用完整/差异/增量备份时,每日、每周和每月备份是必要的。在数据库损坏的情况下,您只需要最后几次备份。
| 归档时间: |
|
| 查看次数: |
5338 次 |
| 最近记录: |