MySQL dual master replication и wireless-связь

Bakti9rov

!*|=?
MySQL dual master replication и wireless-связь

Всем привет,

Имеется два сервера (2 стойки блейд-сервера), настроенных друг на друга как слейвы (Dual Master Replication).

Все операции DDL могут выполняться на обоих серверах. Задача MMR - синхронизировать данные между двумя серверами.

Между ними существует соединение по беспроводной связи, и часто происходят сбои соединения.

Вопрос - какими способами в описанном случае я могу добиться максимальной синхронности и целостности данных на обоих серверах?

Когда происходит обрыв соединения, каждый из серверов начинает работать автономно, сливая изменения в бинарный лог. При возобновлении связи и восстановлении репликации, возникает конфликт данных.

Кто может предложить варианты решения или предоставить консультацию за отдельную плату - просьба прислать свои контакты в ЛС.

-~{}~ 20.12.09 19:47:

Рассматриваю также вариант с mysql-proxy (rw-splitting, прокси висит перед каждым из серверов), но пока не нашел подходящих скриптов Lua для обработки ситуации, когда обрывается соединение между серверами.

p.s. ап теме!
 

dadoc

Новичок
У нас три сервера работают по такой же схеме. Бывает, что связь рвется, но после того как она снова установлена, slave вытягивает все из бинарного лога мастера, с той позиции на которой он остановился. Ни разу не было "конфликтов данных" на уровне mysql. Вы не могли бы уточнить, что вы имеете ввиду под этим самым конфликтом?
 

Bakti9rov

!*|=?
dadoc

проблема возникает в случае, когда primary keys генерируются на стороне внешнего приложения (не GUID и не AUTO_INCREMENT).

также, в случае, когда INSERT происходит на один сервер, а запросы UPDATE/SELECT/DELETE -- попадают на второй сервер, который еще не синхронизирован с первым.

иногда после возобновления перерыва в соединении возникают лаги из-за объемистых бинарных логов

-~{}~ 23.12.09 14:09:

а три сервера у вас в какую схему выстроены? Round Robin?

-~{}~ 27.12.09 18:52:

бамп теме. Кто-нибудь сталкивался с вышеперечисленным?
 

fixxxer

К.О.
Партнер клуба
>>когда primary keys генерируются

самое тупое, что пришло в голову:

pk = max(pk);
while ((++pk % servers_count) != server_id) ;

а с лагами уж ничего не поделаешь...
 
Сверху