Mysql Master Master Replication ошибки мастер / слэйв - PullRequest
0 голосов
/ 16 мая 2018

я попробовал репликацию мастер-мастер; как часть этого сначала я попробовал репликацию master-slave. Соединение репликации успешно, но когда я сделал изменения на ведущем устройстве, ведомое устройство выдает много повторяющихся ошибок.

Last_SQL_Error: Ошибка 'Дублирующая запись' 1576 'для ключа' PRIMARY '' по запросу. База данных по умолчанию: «nagiosxi». Запрос: 'INSERT INTO xi_auditlog (log_time, источник, пользователь, тип, сообщение, ip_address, подробности) VALUES (' 2018-05-15 16:34:19 ',' Nagios XI ',' NULL ', 32,' cmdsubsys: Пользователь [nagiosadmin] применил новую конфигурацию к Nagios Core ',' localhost ',' ')' Replicate_Ignore_Server_Ids:

В соответствии с моим пониманием, мастер не может перезаписать значения в раб. базы данных, которые я копирую, являются базами данных приложений, и база данных master и slave выдает много ошибок, поскольку значения не могут быть переопределены.

Может кто-нибудь, пожалуйста, помогите мне в мастер-репликации. Нужно ли для этого писать скрипт?

1 Ответ

0 голосов
/ 17 мая 2018

Чтобы мастер-мастер или Galera могли безопасно использовать AUTO_INCREMENT, необходимо использовать системные переменные auto_increment_increment и auto_increment_offset для генерации уникальных значений для каждого сервера.

https://mariadb.com/kb/en/library/auto_increment/

Установите auto_increment_increment на 2 на обоих устройствах. Установите auto_increment_offset на 2 на одном сервере и 1 (по умолчанию) на другом.

Это заставляет один сервер создавать только четные значения, а другой - только нечетные. Они по-прежнему будут иметь тенденцию быть последовательными, потому что если один сервер создает 1, 3, 5, 7 и 9, а следующая вставка происходит на другом сервере после того, как все они будут реплицированы, следующий идентификатор будет равен 10. Пробелы неизбежно, но, как скажет любой опытный администратор базы данных, не зацикливайтесь на пробелах.

Вам следует установить binlog_format на ROW или MIXED - не STATEMENT - на обоих серверах. Если вы создаете резервные копии своих журналов, как и должно быть, то log_slave_updates также должно быть включено. Если у вас есть подчиненные реплики, для мастера, к которому они подключены, эта опция должна быть включена.

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

Рекомендуемая практика для мастера / мастера - писать только на один сервер за раз. Ваше приложение может переключаться по желанию, но оно наиболее стабильно, если только одно из них рассматривается как доступное для записи.

...