Инструменты пользователя

Инструменты сайта


wiki:technical:replicate-errors

Это старая версия документа!


Ошибки репликации MySQL(Percona)

1032

Last_SQL_Error: Could not execute Update_rows event on table databaseName.TableName; Can't find record in 'TableName', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the even
t's master log mysql-bin.021084, end_log_pos 696352185

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

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;
 
show slave status\G

Следует иметь ввиду, что подобное поведение не является нормой. Нужно устранить проблему при возможности.

В percona toolkit имеется утилита, которая позволяет забивать на эту ошибку и ехать дальше - pt-slave-restart. При выполнении тулза сообщает нам, в каком месте bin-log она встретила ошибку и едет дальше.

# Выполняется на SLAVE
 
pt-slave-restart 
 
# A software update is available:
2022-08-18T20:43:29  SRV-SLAVE-relay-bin.000417   282849405 1032 
2022-08-18T20:43:29  SRV-SLAVE-relay-bin.000417   283282377 1032 
^CExiting on SIGINT.

Можно попытаться посмотреть запрос, который эту ошибку вызывает, используя утилиту mysqlbinlog

# -j - начальная позиция лога
# --stop-position - место, до куда смотреть ( в нашем случае величины совпадают, смотрим только эту запись)
mysqlbinlog -s -j 283282377  --stop-position=283282377  /var/lib/mysql/SRV-SLAVE-relay-bin.000417

Также можно попытаться найти разницу между мастером и слейвом, используя команду

pt-table-checksum --no-check-binlog-format --nocheck-replication-filters
wiki/technical/replicate-errors.1661179444.txt.gz · Последнее изменение: 2022/08/22 17:44 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki