Я тестирую некоторые варианты инфраструктуры, прежде чем приступить к написанию веб-приложения. Я хотел бы иметь два отдельных сервера баз данных MySQL в разных физических местах, но если один из них выйдет из строя, я хотел бы иметь возможность переключиться на другой с минимальной потерей данных.
Насколько я могу судить, MySQL поддерживает только один «главный» сервер и несколько «подчиненных» серверов. Я предполагаю, что причиной этой настройки является выполнение ваших операций записи на главном сервере и попытка выполнения операций чтения на подчиненных серверах.
Есть ли способ настроить его так, чтобы у меня была возможность аварийного переключения и записи на подчиненный сервер, если главный сервер выходит из строя?
Что нужно иметь в виду для моего теста - у меня есть два VPS от разных провайдеров с одним внешним IP-адресом каждый.
Проверять, выписываться Галера. Говорят, реплицируется через WAN или Cloud. В последнее время Galera привлекает много внимания в кругах MySQL, но это еще не зрелый продукт, поэтому вам нужно тщательно оценивать свою награду / риск.
MySQL Переключение мастеров во время аварийного переключения справочный документ описывает, как вы можете реализовать аварийное переключение в схеме репликации главный / подчиненный и Мульти-мастер и круговая репликация В документе описаны несколько других схем репликации, которые могут удовлетворить ваши требования лучше, чем репликация главный / подчиненный с переключением при отказе.
MySQL поддерживает только один «главный» сервер и несколько «подчиненных» серверов.
Нет, даже если оставить в стороне возможность кластеризации ndb, у вас может быть несколько мастеров и несколько подчиненных устройств. Репликация мастер-мастер вполне может удовлетворить ваши требования. Посмотри на mysqlproxy / HAproxy для инструментов для обработки отказавших узлов.
Можно выполнить сценарий продвижения подчиненного узла в случае сбоя в репликации главный / подчиненный, но если у вас нет веской причины для принятия этого подхода, я бы рекомендовал держаться подальше.
Я бы порекомендовал следующее:
Сочетание четырех (4) факторов для хорошей высокой доступности
Что забавно в этом вопросе, так это то, что я уже третий раз отвечаю на такой вопрос. Я фактически отвечал на этот вопрос в DBA StackExchange 3 раза (2 ответа + ответ на комментарий в мета):
https://dba.stackexchange.com/questions/5153/mysql-replication-1-slave-multiple-masters/5174#5174