Для нового веб-сайта мы должны подключиться к настройке мастер-мастер MySQL. Это веб-сайт .NET, использующий NHibernate, но то же самое относится и к Java или любому другому языку. Мы выбрали эту настройку, потому что хотим, чтобы сайт продолжал работать, если база данных выйдет из строя. Нам не нравятся простои.
Возможно, у меня полное недопонимание того, как работает настройка master-master (в MySQL), но, как я вижу, вы подключаетесь к своей базе данных, как обычно, но за кадром MySQL реплицирует данные между двумя базами данных. Если вы делаете запись, она может перейти либо к мастеру 1, либо к мастеру 2, о котором вы обычно не знаете (за исключением того, что идентификатор автоинкремента вернул бы другое значение). Если мастер А каким-то образом выйдет из строя, мастер Б все равно будет работать, поэтому простоя не будет, мастер А будет игнорироваться до тех пор, пока он снова не повысится, данные не будут реплицированы, и, если все в порядке, мастер А снова вернется в поле.
ЕСЛИ это правильно, и, пожалуйста, поправьте меня, если мои рассуждения неверны, вам нужно сделать что-то особенное на случай, если один мастер выйдет из строя? Если я подключусь к 192.168.1.50 (который является мастером А), что произойдет, если мастер А выйдет из строя? Будет ли MySQL каким-то образом автоматически соединять меня с 192.168.1.51 (мастер B), чтобы мой сайт продолжал работать?
Если я НЕ прав, как тогда работает репликация мастер-мастер MySQL? Нужно ли указывать каждый запрос, на каком мастере он должен быть выполнен? Это не имеет никакого смысла, верно, поскольку, если мастер А отключится, тогда все мои запросы к мастеру А все равно будут терпеть неудачу, и настройка мастер-мастер мне совсем не поможет.
Так что, в принципе, я думаю, что мой вопрос на самом деле:
могу ли я подключиться к одному хосту MySQL (я использую NHibernate, но
это на самом деле не имеет значения), я могу указать одну строку подключения,
и будет ли MySQL знать, что есть два мастера, или мой код изменится
таким образом, что мне нужно указать строки подключения для обоих
мастера (как?), сделать какую-то особую магию, чтобы сбалансировать запросы между двумя
серверы и так далее.
Я что-то упустил? Спасибо!