Лучшие практики для восстановления репликации MySQL - PullRequest
0 голосов
/ 19 апреля 2011

Итак, я смотрю на настройку MySQL Replication в очень простой настройке master / slave. Мы рассматриваем это главным образом для отказа сервера, а не для аварийного восстановления, поэтому я в основном заинтересован в восстановлении после отказа. Все наши приложения написаны на PHP, поэтому я полагаю, что было бы довольно просто установить что-то в MySQL connect, чтобы, если основная база данных не могла быть подключена, мы записали файл и переключились на подчиненный и используйте это.

Моя проблема в том, каков наилучший способ повторной синхронизации этих данных после отработки отказа или если есть лучшее решение.

Сам отказоустойчивость должна быть автоматизирована, но процесс восстановления может быть ручным, и мы собираемся сделать это через WAN. Заранее спасибо за помощь

EDIT

После прочтения архитектур Master / Master vs. Master / Slave мне не совсем понятно, какая установка лучше всего подходит для моего сценария. Сами базы данных довольно большие (у меня нет точного размера в настоящее время) и представляют в основном данные транзакций / журналов (с небольшой проверкой подлинности и проверкой дубликатов). По большей части строки не будут изменены, только добавлены в базу данных.

Моей основной задачей / использованием реплицируемого сервера является аварийное переключение, поэтому, хотя репликация Master-Master кажется идеальной для этих целей, при чтении из них звучит так, как будто это происходит после аварийного переключения, и записи добавляются в базу данных B будет сложнее восстановить базу данных A, чем в отношениях Master-Slave.

Элементы не удаляются ни из одной базы данных, кроме как во время объединения / архивирования, и мы можем просто добавить функциональность, чтобы убедиться, что оба сервера доступны в это время для настройки Master / Slave. 15-20 минут времени восстановления могут быть нормальными в ситуации аварийного восстановления, когда происходило аварийное переключение, но не на постоянной ночной основе. Надеюсь, что они помогут внести ясность в ситуацию.

1 Ответ

0 голосов
/ 19 апреля 2011

Здесь возникает множество факторов.В зависимости от размера базы данных, вы можете создать алгоритм для захвата того, что изменилось (IE сохраняет дату / время при переходе на аварийное переключение или идентификаторы MAX) и просто использовать эти данные для заполнения новой базы данных.Это может вызвать проблемы с удаленными элементами.Если элементы на самом деле удалены, а не просто установлена ​​дата для удаления.

В зависимости от размера, вы можете выключить сайт для обслуживания на 15-30 минут, сделать дамп SQL и просто обрезать таблицы и повторно импортировать данные через интерфейс MySQL CLI, это может занять некоторое времяв зависимости от данных.

Что лучше, все зависит от ваших потребностей.Последний потенциально может быть записан в сценарий, куда он может отключить сайт для обслуживания, затем извлечь данные из FailOverServer в RegServer и затем реализовать серию команд MySQL для усечения RegServer и импорта данных из FailServer после того, как это будет сделано. Включите сайт снова.

Я никогда не делал этого, поэтому не могу говорить, если это хороший путь.Но до тех пор, пока в FailOverServer не будут изменены таблицы, он должен работать нормально.

...