Ошибки репликации MySQL - как бороться?

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Ошибки репликации MySQL - как бороться?

Непрочитанное сообщение Dmitriy_K » 2010-11-12 16:54:00

Столкнулся с тем, что время от времени репликация валится при некоторых простых ошибках запросов (повторное создание существующего или удаление уже несуществующего и т.д.). Временами возникают совсем непонятные ошибки из-за того, что слейв принял команды в другой последовательности, чем они были отданы на мастере. Например, создаётся столбец таблицы и вставляются данные. Репликация падает из-за того, что столбца не обнаруживается (error 1054).
Просьба поделиться опытом кто как с этим борется. Например, я использую пропуск ошибки 1050 (Таблица уже существует): slave-skip-errors = 1050
Но бывают ещё, например, ошибки 1054 (Неизвестный столбец) и 1396 (Operation failed). Можно ли безопасно пропускать их? Или это ведёт к повреждению данных?
Настройка бинарных логов: binlog_format = mixed

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dmitriy_K
сержант
Сообщения: 200
Зарегистрирован: 2009-04-07 6:22:33
Откуда: г.Королёв

Re: Ошибки репликации MySQL - как бороться?

Непрочитанное сообщение Dmitriy_K » 2010-11-12 16:58:19

Кстати, пробовал иногда пользоваться командой:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
Пропустить следующие n событий от главной системы.
Помогает далеко не всегда. При error 1396 у меня всё затыкалось напрочь.