Резервное копирование большой базы данных с большим объемом данных за небольшой промежуток времени, а затем восстановление за небольшой промежуток времени?
Есть полезные идеи?
Используйте его средства репликации
mylvmbackup это инструмент для быстрого создания резервных копий файлов данных сервера MySQL. Для выполнения резервного копирования mylvmbackup получает блокировку чтения для всех таблиц и сбрасывает все кеши сервера на диск, создает моментальный снимок тома, содержащего каталог данных MySQL, и снова разблокирует таблицы. Процесс создания моментального снимка занимает совсем немного времени. Когда это будет сделано, сервер может продолжить нормальную работу, а фактическое резервное копирование файлов продолжится.
Поместите базу данных в аппаратную систему RAID, которая позволяет зеркалировать.
Для резервного копирования просто отключите зеркальное отображение. Это даст вам две точные копии базы данных. Держите одного «живым». Запустите перестроение на другом (чтобы очистить возможное несогласованное состояние, «отключив его»), а затем сделайте резервную копию. Вы можете не торопиться, поскольку живая БД все еще отвечает на запросы.
Включите зеркало для получения любых обновлений, которые произошли во время резервного копирования.
Для восстановления также отключите зеркало и восстановите в "мертвую" часть. После завершения восстановления снова включите зеркало таким образом, чтобы «живая» база данных была перезаписана при восстановлении. На этом этапе у вас будет несколько секунд простоя сервера БД, поскольку вы должны выключить «живую» БД и указать серверу на восстановленную БД. Следует помнить об одной проблеме: любые изменения, внесенные в действующую базу данных, будут потеряны. Однако обычно это не небольшая проблема: вы должны выполнить восстановление, потому что база данных повреждена.
Таким образом, у вас либо нет действующей базы данных, либо вы должны запускать ее в состоянии «только чтение» или что-то в этом роде. Если база данных не полностью повреждена, вы можете восстановить данные в третью и просто скопировать несколько необходимых вам таблиц (или использовать «мертвую» часть зеркала как место для отходов).
Такой подход дает минимально возможное время простоя.
Было бы неплохо узнать, с какой ОС мы имеем дело, но, если предположить, что это последний дистрибутив Linux, лучше всего использовать моментальные снимки LVM. В сети полно подходящих рецептов и инструментов, вот одна ссылка, в которой перечислены самые популярные из них:
Если вы хотите получить полную копию всего экземпляра сервера mysql с наименьшим временем простоя, используя только функции, присутствующие на сервере mysql, выполните следующие действия:
если вы используете файловую систему, которая поддерживает моментальные снимки томов, вы можете заменить № 2 моментальным снимком.
Используйте моментальный снимок файловой системы базы данных Innodb *. Вы получите согласованную копию файлов при восстановлении, после того как InnoDB завершит откат любых транзакций, которые были в процессе и т. Д.
Для резервного копирования вам необходимо:
Чтобы восстановить его, выключите mysql, сотрите старые файлы данных, затем восстановите файлы в каталог данных mysql. Когда вы перезапускаете экземпляр mysql, он восстанавливается после любых транзакций, которые выполнялись во время резервного копирования (путем их отката), а затем запускается нормально. Конечно, это может занять некоторое время.
* конечно, у вас будет несколько таблиц MyISAM в системной базе данных "mysql". Убедитесь, что они не меняются во время создания снимка.