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

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


wiki:technical:replicate-errors

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:technical:replicate-errors [2022/08/18 18:18] Dimanwiki:technical:replicate-errors [2022/08/24 23:47] (текущий) – [pt-table-checksum] Diman
Строка 1: Строка 1:
 +====== Ошибки репликации MySQL(Percona) ======
 +
 +===== 1032 =====
 +
 <code error> <code error>
 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 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
Строка 4: Строка 8:
 </code> </code>
  
-Нужно выполнить такой запрос ))))+Можно пропустить ошибку, забить на нее и попробовать снова включить репликацию. есть вероятность, что ошибка будет повторяться в разных позициях, поэтому придется пропустить снова и снова.
  
 <code mysql> <code mysql>
  
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; 
 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;
  
Строка 145: Строка 17:
  
 </code> </code>
 +
 +Следует иметь ввиду, что подобное поведение не является нормой. Нужно устранить проблему при возможности.
 +
 +В percona toolkit имеется утилита, которая позволяет забивать на эту ошибку и ехать дальше - **pt-slave-restart**. При выполнении тулза сообщает нам, в каком месте bin-log она встретила ошибку и едет дальше.
 +
 +<code bash>
 +# Выполняется на 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.
 +
 +</code>
 +
 +Можно попытаться посмотреть запрос, который эту ошибку вызывает, используя утилиту **mysqlbinlog**
 +
 +<code bash>
 +# -j - начальная позиция лога
 +# --stop-position - место, до куда смотреть ( в нашем случае величины совпадают, смотрим только эту запись)
 +mysqlbinlog -s -j 283282377  --stop-position=283282377  /var/lib/mysql/SRV-SLAVE-relay-bin.000417
 +</code>
 +
 +===== pt-table-checksum =====
 +
 +Также можно попытаться найти разницу между мастером и слейвом, используя команду **pt-table-checksum**
 +Для этого добавляем пользователя MySQL root на SLAVE с возможностью доступа снаружи:
 +<code mysql>
 +##
 +# Добавляем пользователя MySQL
 +CREATE USER 'root'@'%' IDENTIFIED BY '$Password';
 +GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
 +FLUSH PRIVILEGES;
 +</code>
 +
 +
 +<code bash>
 +##
 +# Считаем расхождение:
 +# pt-table-checksum --no-check-binlog-format --nocheck-replication-filters
 +
 +pt-table-checksum --nocheck-replication-filters --replicate=testdb.checksums \
 + --databases=testdb  h=149.202.XXX.XXX,u=root,p=$Password,P=3306 --no-check-binlog-format 
 +</code>
 +
 +<code bash>
 +# Смотрим результат
 +Checking if all tables can be checksummed ...
 +Starting checksum ...
 +Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
 +            TS ERRORS  DIFFS     ROWS  DIFF_ROWS  CHUNKS SKIPPED    TIME TABLE
 +08-24T23:33:54      0      0        5          0               0.025 testdb.Persons
 +</code>
 +<code mysql>
 +mysql> show variables like 'binlog_format';
 ++---------------+-------+
 +| Variable_name | Value |
 ++---------------+-------+
 +| binlog_format | ROW   |
 ++---------------+-------+
 +1 row in set (0.00 sec)
 +
 +</code>
 +
 +
wiki/technical/replicate-errors.1660835909.txt.gz · Последнее изменение: 2022/08/18 18:18 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki