У меня есть вопрос, касающийся логического резервного копирования баз данных MySQL, которые используют MyISAM и InnoDB.
mysqldump
Утилита поддерживает эти два варианта:
--single-транзакция - создает непротиворечивый снимок путем выгрузки всех таблиц в одной транзакции. Работает ТОЛЬКО для таблиц, хранящихся в механизмах хранения, которые поддерживают многовариантность (в настоящее время поддерживает только InnoDB) [...] Опция автоматически отключает --lock-таблицы.
-x, --lock-all-tables - блокирует все таблицы во всех базах данных. Это достигается за счет глобальной блокировки чтения на время всего дампа. Автоматически отключает --single -action и --lock-таблицы.
Для InnoDB нам нужно
--single-transaction
для MyISAM нам нужны - таблицы блокировок или таблицы блокировок (в случае необходимости согласованности между базами данных).
Итак, как создать резервную копию гибридной базы данных (базы данных, использующей механизмы MyISAM и InnoDB)?
Редактировать:
Просто чтобы уточнить, вопрос можно переформулировать так:
Гарантируют ли опции блокировки [all-] таблиц последовательное резервное копирование таблиц InnoDB?
--lock-all-tables
то резервное копирование будет согласованным, верно? И нужно запускать mysqldump только один раз: это будет безопасно для InnoDB и MyISAM одновременно, верно?В качестве дополнительной идеи для вашей ситуации, может быть, полезно потратить некоторые мысли на настройку конфигурации главного подчиненного, где резервная копия создается из подчиненного.
База данных MySQL с сочетанием InnoDB и MyISAM всегда (насколько я знаю в каждой конфигурации и с каждым инструментом резервного копирования) блокирует таблицы MyISAM для фазы резервного копирования MyISAM.
Чтобы избежать этой блокировки, используйте эту настройку:
Все записи и чтения отправляются на сервер A (мастер). Сервер B (подчиненный) используется только для резервного копирования. На ведомом устройстве вы устанавливаете инструмент резервного копирования или скрипт по вашему выбору, например, MySQL Administrator.
Настройте резервную копию, например, ежедневно в ночное время. Блокировки на ведомом устройстве приводят к задержке, в то время как ведомая блокировка блокируется, но эта задержка обнаруживается, как только резервное копирование закончено и блокировка открыта.
источник