Репликация MySQL, позволяющая дублировать записи первичного ключа после перезапуска репликации
У меня есть MySQL Master
(v. 5.1.56-ndb-7.1.18-cluster-gpl-log
) - 2 рабов (оба v. 5.1.51-community
) настройка системы и работает уже несколько лет. Первоначально он был предназначен для кластера, поэтому мастер имеет ndb
версия.
В прошлые выходные Мастер завис после того, как ядро пожаловалось на ошибку чипа ОЗУ ("Dazed and confused but trying to continue"
ошибка в /var/log/messages). Я лично не занимался восстановлением, но человек, который передал мне, что репликация была остановлена, перезапустил сервер, а затем репликация была перезапущена с использованием соответствующих значений журнала ретрансляции. Я предполагаю, что он также использовал ошибки пропуска при перезапуске репликации. Мое понимание пропущенных ошибок - то, что это действует как команда игнорирования ошибок, но это не приостанавливает ограничения.
Даже если это не было сделано должным образом, то, что в итоге произошло, не должно произойти. Один раб в порядке, другой раб имеет около 20-30 дубликатов Primary Key
записи в таблице. Стол InnoDB
, Я не говорю, что мы получили "1062"
ошибка для дублирования столкновений ключей, у нас есть дубликаты записей. Это было обнаружено, потому что отчетность отключена, и когда запись была обновлена для корректировки значений, "UPDATE"
вступает в силу для одной записи, в то время как "SELECT"
читает другой. Я дважды проверил, PRIMARY KEY
существует на ведомой структуре, а также. Кто-нибудь видел это раньше?
Наше запланированное "исправление" - запустить на главном компьютере команду удаления, которая ничего не удалит на главном или подчиненном устройстве, но поскольку на втором ведомом устройстве обновлена только одна из записей, мы можем однозначно идентифицировать ее с помощью другого столбца. Это имеет смысл, за исключением того факта, что дублирующая запись не должна существовать в первую очередь, что заставляет меня беспокоиться о том, чтобы сделать что-нибудь, чтобы коснуться одной из строк.
Какие-либо предложения? или почему это произошло в первую очередь?