Это никогда не произойдет с мастером, почему?
Ряд SQL реплицируется с мастера,
, если запись уже существует в мастере, mysql отклоняется на мастере
но на ведомом, если происходит сбой и позиция репликации не переходит к следующему SQL (он просто остановился)
Причина?
Запрос вставки этогозапись записывается непосредственно в ведомое устройство без использования репликации от ведущего устройства
Как исправить?
Пропустить ошибку на ведомом устройстве, как
SET GLOBAL sql_slave_skip_counter = N;
подробности - http://dev.mysql.com/doc/refman/5.0/en/set-global-sql-slave-skip-counter.html
Или удалите дублирующую запись на ведомом устройстве, возобновите ведомое снова (пусть репликация сделает вставку)
В худшем сценарии вам потребовалось бы повторно выполнить настройку сновадля обеспечения целостности данных на ведомом устройстве.
Как предотвратить?
Проверьте уровень приложения, убедитесь, что нет записи непосредственно в ведомое устройство
Это включает в себя, как вы подключаетесь к mysqlв командной строке
Split MySQL пользователь, который может сделать записьe и read,
Итак, ваше приложение должно использовать пользователя read (master и slave), когда не требуется запись.
Использовать пользователя write (только master) для действий, требующих записи в базу данных.