Резервное копирование
Организация ежедневного резервного копирования баз данных со сжатием и чисткой копий старше 30 дней.
Содержание
Полный общий рецепт, он же рецепт для Ubuntu
# подготовка (делается один раз) sudo bash mkdir -p /home/db-backups chmod 755 /home/db-backups chown root:root /home/db-backups apt-get -y --force-yes install p7zip-full # разовое выполнение резервного копирования делается так: /usr/bin/7z a -mx5 /home/db-backups/gdb-$(date +%F).7z /opt/xxi/data/
Занесение в расписание: откройте файл /etc/crontab и допишите туда:
# ---------------------------------------- # SP Database Backup # ---------------------------------------- 0 0 * * * root /usr/bin/7z a -mx5 /home/db-backups/gdb-$(date +\%F).7z /opt/xxi/data/ 0 0 * * * root /usr/bin/find /home/db-backups -name "*.7z" -mtime +30 -exec rm -f {} \;
Отличия в Mandriva
Отличается командой установки 7-Zip:
urpmi p7zip
и именем исполняемого файла 7-Zip: не 7z, а 7za.
Отличие в ALT Linux
Отличается от Ubuntu командой установки 7-Zip:
apt-get install p7zip
Если нет 7-Zip
Можете использовать tar:
tar -czf /home/db-backups/gdb-$(date +\%F).tar.gz /opt/xxi/data/
Команда в crontab для очистки архивов старше 30 дней будет выглядеть иначе:
0 0 * * * root /usr/bin/find /home/db-backups -name "*.gz" -mtime +30 -exec rm -f {} \;
Суть изменения в том, что удаляются не файлы *.7z, а *.gz
Результат
Каждые сутки в полночь будут создаваться резервные копии баз портала. Они будут складываться в папку /home/db-backups, доступную только для пользователю root. Копии старше 30 дней будут удаляться автоматически.
Если на сервере более чем один винчествер, не допускайте, чтобы базы и их копии лежали на одном и том же физическом диске, потому что если один диск из двух окажется нерабочим, у вас больше шансов.
Если у вас на диске более чем один раздел (не считая swap), лучше разделить базы и резервные копии по разделам, потому что если файловая система рухнет только одна на одном разделе, у вас останется второй раздел с живой базой.
Если на разделе с резервными копиями мало свободного места, а автоматическое создание копий вы настроили только что и не уверены, хватит ли места под месяц, можете временно уменьшить количество дней до, скажем, 7, затем через некоторое время посмотреть, что получается, и по результатам решить, какое количество дней хранить.
Не рекомендуем хранить резервные копии всего за за 1-2 дня. Представьте себе, что в базе сделаны нежелательные изменения (или произошло разрушение) в пятницу а обнаружены они были в понедельник. Одной или двух копий двух будет недостаточно. Надо как минимум три.
Точные данные о размере архивов дать невозможно, всё сильно зависит от количества информации в базе. Примеры:
- ежедневное резервирование большой базы (одного из самых первых пользователей портала, даных там за несколько лет) в количестве 30 дей занимает около 700 мегабайт.
- ежедневное резервирование небольшой базы в количестве 30 дей занимает около 160 мегабайт.