Пятница, 20 сентября, 2024

Пропуск ошибок репликации в MySQL

В MySQL, когда на slave-сервере происходит ошибка выполнения запроса, репликация обычно останавливается. Это делается для того, чтобы мы могли идентифицировать проблему, исправить её и сохранить согласованность данных с мастер-сервером, который отправил запрос. Однако вы можете пропустить такие ошибки, хотя это не рекомендуется, только если вы хорошо знаете, какие запросы вызывают ошибки и почему они не выполняются.

Например, вы можете пропустить только один запрос, который блокирует slave-сервер, используя следующие команды в консоли MySQL:

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

Могут возникнуть случаи, когда вам нужно пропустить несколько запросов. Например, вы можете хотеть пропустить все дублирующиеся ошибки, которые вы получаете (вывод из команды `show slave status`):

"1062 | Error 'Duplicate entry 'xyz' for key 1' on query. Default database: 'db'. Query: 'INSERT INTO ..."

Если вы уверены, что пропуск этих ошибок не приведет к несогласованности на slave-сервере, и вы хотите пропустить их ВСЕ, вы можете добавить следующую строку в файл my.cnf:

slave-skip-errors = 1062

Как показано в примере выше, в моем случае 1062 — это ошибка, которую вы хотите пропустить. Здесь мы имеем: Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY) Сообщение: Duplicate entry ‘%s’ for key %d

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

slave-skip-errors=[err_code1,err_code2,...|all]

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

Latest article

Must read