Согласованное логическое резервное копирование баз данных, использующих движки MyISAM и InnoDB


8

У меня есть вопрос, касающийся логического резервного копирования баз данных MySQL, которые используют MyISAM и InnoDB.

mysqldumpУтилита поддерживает эти два варианта:

  • --single-транзакция - создает непротиворечивый снимок путем выгрузки всех таблиц в одной транзакции. Работает ТОЛЬКО для таблиц, хранящихся в механизмах хранения, которые поддерживают многовариантность (в настоящее время поддерживает только InnoDB) [...] Опция автоматически отключает --lock-таблицы.

  • -x, --lock-all-tables - блокирует все таблицы во всех базах данных. Это достигается за счет глобальной блокировки чтения на время всего дампа. Автоматически отключает --single -action и --lock-таблицы.

    • Для InnoDB нам нужно --single-transaction

    • для MyISAM нам нужны - таблицы блокировок или таблицы блокировок (в случае необходимости согласованности между базами данных).

Итак, как создать резервную копию гибридной базы данных (базы данных, использующей механизмы MyISAM и InnoDB)?

Редактировать:

Просто чтобы уточнить, вопрос можно переформулировать так:

Гарантируют ли опции блокировки [all-] таблиц последовательное резервное копирование таблиц InnoDB?

Ответы:


8

С mysqldump вы можете безопасно использовать только --single-transactionесли все ваши таблицы InnoDB, в противном случае ваша резервная копия не согласована.

Если у вас есть требование для гибридного резервного копирования, то вам нужно lock-tablesвключить все таблицы в резервную копию (по умолчанию), что будет безопасно для всех механизмов. Стоит также упомянуть, что параметры по умолчанию обеспечат безопасность вашей резервной копии, вам не нужно включать какой-либо специальный флаг.

Примечание: если у вас есть гибридный микс, возможно, посмотрите на xtrabackup. Он будет блокироваться только на этапе резервного копирования MyISAM.


Как раз собирался опубликовать это, но вы опередили меня. Соответствующая ссылка: percona.com/doc/percona-xtrabackup/innobackupex/…
Дерек Дауни

Спасибо за подтверждение того, что таблицы блокировки гарантируют согласованное резервное копирование для обоих двигателей. В настоящее время я смотрю на Zmanda Recovery Manager для MySQL (я также посмотрю на xtrabackup).
Дмитрий Радулов

Zmanda - это всего лишь менеджер GUI для всех других методов резервного копирования - я уверен, что использование xtrabackup поддерживается.
Морган Токер

Привет @Morgan Tocker, Zmanda также предоставляет набор скриптов (zrm- *), которые на самом деле выполняют различные типы резервного копирования: логическое, raw и снимки. Все базы данных, которые мы администрируем, являются гибридными, поэтому использование отдельного продукта не имеет особой ценности - мы не можем избежать блокировки во время резервного копирования.
Дмитрий Радулов

Этот ответ говорит, что если использовать mysqldump и указать, --lock-all-tablesто резервное копирование будет согласованным, верно? И нужно запускать mysqldump только один раз: это будет безопасно для InnoDB и MyISAM одновременно, верно?
КаджМагнус

2

В качестве дополнительной идеи для вашей ситуации, может быть, полезно потратить некоторые мысли на настройку конфигурации главного подчиненного, где резервная копия создается из подчиненного.

База данных MySQL с сочетанием InnoDB и MyISAM всегда (насколько я знаю в каждой конфигурации и с каждым инструментом резервного копирования) блокирует таблицы MyISAM для фазы резервного копирования MyISAM.

Чтобы избежать этой блокировки, используйте эту настройку:

  • Сервер A: Мастер MySQL
  • Сервер B: MySQL Slave (подключен к Серверу A)

Все записи и чтения отправляются на сервер A (мастер). Сервер B (подчиненный) используется только для резервного копирования. На ведомом устройстве вы устанавливаете инструмент резервного копирования или скрипт по вашему выбору, например, MySQL Administrator.

Настройте резервную копию, например, ежедневно в ночное время. Блокировки на ведомом устройстве приводят к задержке, в то время как ведомая блокировка блокируется, но эта задержка обнаруживается, как только резервное копирование закончено и блокировка открыта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.