Назад | Перейти на главную страницу

резервное копирование большой базы данных с большим объемом данных за небольшой промежуток времени, а затем восстановление за небольшой промежуток времени?

Резервное копирование большой базы данных с большим объемом данных за небольшой промежуток времени, а затем восстановление за небольшой промежуток времени?

Есть полезные идеи?

Используйте его средства репликации

mylvmbackup это инструмент для быстрого создания резервных копий файлов данных сервера MySQL. Для выполнения резервного копирования mylvmbackup получает блокировку чтения для всех таблиц и сбрасывает все кеши сервера на диск, создает моментальный снимок тома, содержащего каталог данных MySQL, и снова разблокирует таблицы. Процесс создания моментального снимка занимает совсем немного времени. Когда это будет сделано, сервер может продолжить нормальную работу, а фактическое резервное копирование файлов продолжится.

Поместите базу данных в аппаратную систему RAID, которая позволяет зеркалировать.

Для резервного копирования просто отключите зеркальное отображение. Это даст вам две точные копии базы данных. Держите одного «живым». Запустите перестроение на другом (чтобы очистить возможное несогласованное состояние, «отключив его»), а затем сделайте резервную копию. Вы можете не торопиться, поскольку живая БД все еще отвечает на запросы.

Включите зеркало для получения любых обновлений, которые произошли во время резервного копирования.

Для восстановления также отключите зеркало и восстановите в "мертвую" часть. После завершения восстановления снова включите зеркало таким образом, чтобы «живая» база данных была перезаписана при восстановлении. На этом этапе у вас будет несколько секунд простоя сервера БД, поскольку вы должны выключить «живую» БД и указать серверу на восстановленную БД. Следует помнить об одной проблеме: любые изменения, внесенные в действующую базу данных, будут потеряны. Однако обычно это не небольшая проблема: вы должны выполнить восстановление, потому что база данных повреждена.

Таким образом, у вас либо нет действующей базы данных, либо вы должны запускать ее в состоянии «только чтение» или что-то в этом роде. Если база данных не полностью повреждена, вы можете восстановить данные в третью и просто скопировать несколько необходимых вам таблиц (или использовать «мертвую» часть зеркала как место для отходов).

Такой подход дает минимально возможное время простоя.

Было бы неплохо узнать, с какой ОС мы имеем дело, но, если предположить, что это последний дистрибутив Linux, лучше всего использовать моментальные снимки LVM. В сети полно подходящих рецептов и инструментов, вот одна ссылка, в которой перечислены самые популярные из них:

http://forums.mysql.com/read.php?28,204733,204733

Если вы хотите получить полную копию всего экземпляра сервера mysql с наименьшим временем простоя, используя только функции, присутствующие на сервере mysql, выполните следующие действия:

  1. отправьте FLUSH TABLES WITH READ LOCK, чтобы закрыть все дескрипторы таблиц и остановить создание новых.
  2. сделайте копию всего каталога данных mysql, используя функции копирования вашей ОС или утилиту резервного копирования.
  3. отправить РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ.

если вы используете файловую систему, которая поддерживает моментальные снимки томов, вы можете заменить № 2 моментальным снимком.

Используйте моментальный снимок файловой системы базы данных Innodb *. Вы получите согласованную копию файлов при восстановлении, после того как InnoDB завершит откат любых транзакций, которые были в процессе и т. Д.

Для резервного копирования вам необходимо:

  1. Сделайте снимок файловой системы ИЛИ если ваша файловая система не поддерживает это, сделайте снимок блочного устройства
  2. При необходимости смонтируйте снимок файловой системы или блочного устройства, оставив при необходимости некоторое время на восстановление файловой системы (база данных все еще будет в сети в этот момент)
  3. Создайте резервную копию смонтированного снимка с помощью обычных инструментов резервного копирования.
  4. При необходимости отключите и / или удалите снимок.

Чтобы восстановить его, выключите mysql, сотрите старые файлы данных, затем восстановите файлы в каталог данных mysql. Когда вы перезапускаете экземпляр mysql, он восстанавливается после любых транзакций, которые выполнялись во время резервного копирования (путем их отката), а затем запускается нормально. Конечно, это может занять некоторое время.

* конечно, у вас будет несколько таблиц MyISAM в системной базе данных "mysql". Убедитесь, что они не меняются во время создания снимка.