В настоящее время я веду ежедневное резервное копирование своей базы данных, выполняя ежедневный mysqldump и используя logrotate, чтобы сохранить последние 7 дней mysqldump.
Я хотел бы улучшить этот процесс резервного копирования, чтобы сохранять 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)
Вероятно, logrotate - не лучший инструмент для этого.
Я использовал mysqldump и rsnapshot в течение долгого времени для достижения точно таких же требований.
Вместо mysqldump вы также можете рассмотреть возможность использования xtrabackup.
Можете добавить nodateext
вариант вашей базы данных logrotate conf.
Вы также можете поместить какой-нибудь скрипт в раздел postrotate, который копирует / перемещает ваши ежедневные и еженедельные ежемесячные резервные копии в новое место, что предотвратит их удаление с помощью logrotate.
Другое решение - написать простой сценарий оболочки, который будет выполнять резервное копирование и чередовать его и помещать его в 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 создает только полную резервную копию базы данных, поэтому вы не делаете еженедельное / ежемесячное резервное копирование.
При использовании полных / дифференциальных / инкрементных резервных копий необходимы ежедневные, еженедельные и ежемесячные резервные копии. Вам понадобится всего несколько последних резервных копий на случай повреждения базы данных.
Вот еще одна его ручная версия, которая намного проще и удобнее в настройке. https://github.com/jeevandongre/backup-restore