Выполнение бекапов баз данных с ротацией (backup rotation) имеет несколько преимуществ:
1. Сохранение истории изменений: Ротация бекапов позволяет сохранять историю изменений баз данных. Вместо того, чтобы просто заменять существующую полную резервную копию новой копией, ротация создает несколько поколений бекапов. Каждая резервная копия представляет собой точку во времени, отражающую состояние базы данных на конкретный момент. Это может быть полезно для аудита, отладки или восстановления данных на разных этапах разработки или эксплуатации.
2. Управление пространством хранения: Ротация бекапов позволяет более эффективно использовать пространство хранения. Вместо создания полной копии базы данных каждый раз, можно сохранять только изменения, которые произошли с момента последнего бекапа. Это позволяет экономить дисковое пространство и уменьшать нагрузку на систему хранения.
3. Легкость восстановления: Ротация бекапов облегчает процесс восстановления данных. В случае потери или повреждения базы данных можно выбрать конкретный момент во времени, когда была создана резервная копия, и использовать ее для восстановления. Благодаря наличию нескольких поколений бекапов, можно восстановить базу данных до определенного состояния, что может быть особенно полезно при обнаружении ошибок или нежелательных изменений.
4. Защита от ошибок и сбоев: Ротация бекапов обеспечивает дополнительный уровень защиты данных. Если при создании одной из резервных копий произошла ошибка или сбой, у вас все равно есть предыдущие версии для восстановления. Это помогает минимизировать риски потери или повреждения данных и обеспечивает надежность бекапов.
5. Гибкость и настраиваемость: Системы ротации бекапов обычно позволяют настроить параметры хранения и ротации согласно требованиям. Можно определить количество хранимых поколений бекапов, частоту их создания и другие параметры. Это дает гибкость в выборе стратегии бекапирования, соответствующей конкретным потребностям и ограничен 7 днями.
Скрипт.
Этот скрипт представляет собой пример скрипта для создания бекапа баз данных MySQL с ротацией.
#!/bin/bash
cd /backup/sql
rm ./sql-dump-7.gz
mv sql-dump-6.gz sql-dump-7.gz
mv sql-dump-5.gz sql-dump-6.gz
mv sql-dump-4.gz sql-dump-5.gz
mv sql-dump-3.gz sql-dump-4.gz
mv sql-dump-2.gz sql-dump-3.gz
mv sql-dump-1.gz sql-dump-2.gz
mv sql-dump-0.gz sql-dump-1.gz
mysqldump -uroot -pPASSWORD databases | gzip -c -9 > /backup/sql/sql-dump-0.gz
Рассмотрим его работу:
Скрипт переходит в директорию
/backup/sql
, где располагаются резервные копии SQL.Далее, скрипт удаляет самую старую резервную копию
sql-dump-7.gz
, чтобы освободить место для новой копии.Затем он последовательно сдвигает все остальные резервные копии на одну позицию выше. Каждая копия переименовывается с добавлением суффикса с более высоким номером, например,
sql-dump-6.gz
становитсяsql-dump-7.gz
.Затем выполняется команда
mysqldump
для создания резервной копии всех баз данных MySQL. Командаmysqldump
используется для экспорта содержимого баз данных в формате SQL. Здесь указаны параметры-uroot -p
PASSWORD для указания имени пользователяroot
и пароля PASSWORD базы данных MySQL. Данные дляroot
можно посмотреть в /root/.my.cnf (если это было настроено ранее).
Использование ключа --all-databases, с одной стороны преимущество, т.к. сохраняются все БД. А другой стороны недостаток, т.к. при восстановлении нужно будет выбирать конкретную БД , которую нужно будет импортировать.Результат команды
mysqldump
передается через конвейер (pipe) в командуgzip
, которая сжимает данные резервной копии и сохраняет их в архивном формате. Флаг-c
указывает на вывод результата в стандартный вывод, а флаг-9
указывает на наивысший уровень сжатия.Наконец, созданная резервная копия
sql-dump-0.gz
сохраняется в директории/backup/sql
. Копия получает наименьший номер0
, обозначая самую свежую версию.
Таким образом, этот скрипт выполняет ротацию резервных копий баз данных MySQL в пределах 7 дней, удаляя самую старую копию и сдвигая все остальные. Новая копия создается с каждым запуском скрипта, обновляя старшую версию, и сохраняется в сжатом формате для экономии места на диске.
Много полезных статей-инструкций в нашем FAQ.