Наилучшая практика записи базы данных сайта во время холодного резервного копирования? - PullRequest
6 голосов
/ 16 декабря 2011

Допустим, у вас есть большой, популярный веб-сайт, управляемый базой данных. На сайте есть люди весь день и всю ночь. Они получают доступ к страницам, которые читают и записывают в базу данных.

При реализации ежедневного плана резервного копирования базы данных он включает в себя холодное резервное копирование, что означает, что вы временно выключаете базу данных или блокируете таблицы во время резервного копирования. Это гарантирует, что новые данные не будут вставлены в базу данных во время резервного копирования.

Каковы некоторые хорошие подходы для кодирования контроллеров и моделей вашего сайта, чтобы они не выходили из строя из-за блокировок таблиц или отсутствия базы данных? Вам нужно внедрить какую-нибудь систему очередей записи в базу данных или что-то в этом роде? Или просто временно отключить весь сайт? Или просто делать живое резервное копирование без блокировки или выключения чего-либо? Что такое хороший подход?

1 Ответ

3 голосов
/ 16 декабря 2011

Используйте репликацию, вот простой сценарий

1 ведущий A, 2 ведомых B, C

  • во время нормальной работы ваше приложение должно балансировать нагрузку между A, B и C
  • во время резервного копирования ваше приложение НЕ должно читать / писать из A
    • освободить А от того, чтобы стать хозяином, продвинуть В на мастера, сменить раба С на прослушивание на В
    • использовать A для резервного копирования
    • после резервного копирования
    • изменить A, чтобы слушать от B (это значит, что A с этого момента становится рабом)
  • когда A догоняет B, (больше нет задержки), измените ваше приложение, чтобы снова распределить нагрузку между A, B, C

Для Дня 2, просто повторите весь цикл, конечно, мастер теперь B.

...