Рубріки: HighloadТеория

Mysql 1062 Duplicate entry for key PRIMARY при репликации

Ігор Грегорченко

Такая ошибка в Mysql происходит по причине того, что на реплике уже существует запись, которая пришла с мастера.

При просмотре состояния репликации:

mysql> SHOW SLAVE STATUSG

Вы увидите такую проблему:

Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '115846' for key 'PRIMARY'' on query. Default database: 'db'. Query: 'INSERT INTO some_table ...

Вариантов решения существует несколько.

1. Пропустить ошибку

Можно заставить Mysql пропустить эту ошибку и продолжить репликацию. Для этого нужно выполнить такой запрос на реплике:

mysql> STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;

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

1. Пропускать подобные ошибки всегда

Если ошибки возникают периодически, но это не нарушает логику приложения, то можно использовать такую настройку в файле my.cnf (на слейве):

slave-skip-errors = 1062 

Это позволит постоянно игнорировать подобные ошибки при репликации.

3. Игнорирование проблемных таблиц

Проблемы могут быть вызваны тем, что в репликации участвуют таблицы, которые нет необходимости реплицировать.
Их можно исключить используя такую настройку в my.cnf (на мастере):

replicate_wild_ignore_table = playground.% 

Все таблицы из базы данные playground не будут участвовать в репликации

Таких инструкций может быть несколько:

replicate_wild_ignore_table = playground.% 
replicate_wild_ignore_table = data.temp_%

Кроме базы playground, будут также исключены все таблицы которые начинаются на “temp_” из базы data

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024