SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.05.2009 20:09:57

Хрен
Участник
Зарегистрирован: 06.05.2009
Сообщений: 3

Двусторонняя репликация и Auto_Increment

Доброго времени суток!

У нас есть 2 программы, которые льют данные каждая в свою локальную базу. На этих 2-х базах настроена двусторонняя репликация. Всё было хорошо, пока работала только одна из этих 2-х программ. Как только начала работать вторая, она тоже начала помещать данные в свою базу, и начались проблемы.
Дело в том, что в таблице используется поле id со свойством auto_increment. И получается, что на одной базе сделалась запись с определённым ID, и на второй тоже сделалась запись с этим же ID, и при первой же попытке это дело среплицировать получаем ошибку Dublicate entry.

Я так думаю, что если бы при репликации slave-базе не пытались запихнуть именно тот номер id, который был создан на Master-базе, то проблемы бы не было. Можно ли это как-то сделать? Или может есть другие методы решения проблемы?

Заранее спасибо.

Неактивен

 

#2 06.05.2009 21:08:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Двусторонняя репликация и Auto_Increment

Насколько я понимаю, баз таки не две, а одна smile

Конкретно проблема с auto_increment решается выставлением двух переменных
--auto-increment-increment=2
--auto-increment-offset

Вторую нужно поставить на одном сервере в двойку, а на втором оставить единицей. Тогда значения
будут одним сервером создаваться четные, а другим — нечетные. Впрочем, это не избавит Вас от всех
проблем двусторонней репликации (например, одновременное заведение одинаковых текстовых значений
на разных серверах при уникальном ключе).

Неактивен

 

#3 07.05.2009 00:18:06

Хрен
Участник
Зарегистрирован: 06.05.2009
Сообщений: 3

Re: Двусторонняя репликация и Auto_Increment

К счастью, больше уникальных ключей нет. Большое спасибо, попробуем smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson