Устаревшая информация о взаимоблокировке в 'show innodb status' - PullRequest
0 голосов
/ 04 мая 2018

Я использую кластер MariaDB Galera с 3 узлами на основе MariaDB 10.1.32. В настоящее время я получаю довольно много сообщений "Deadlock found" в моем системном журнале:

2018-05-04  9:21:33 140130671872768 [ERROR] mysqld: Deadlock found when trying to get lock; try restarting transaction

Чтобы найти причину взаимоблокировок, я запускаю «show engine innodb status», но раздел «ПОСЛЕДНЯЯ ОБНАРУЖЕННАЯ ОТКЛОНЕНИЕ» содержит только устаревшую информацию (согласно отметке времени):

------------------------
LATEST DETECTED DEADLOCK
------------------------
2018-04-28 21:21:08 7f71a9450b00
*** (1) TRANSACTION:
[...]

Почему в журнале сообщается о взаимоблокировках, но они не отображаются в выходных данных "show engine innodb status"?

1 Ответ

0 голосов
/ 05 мая 2018

Короткий ответ: Galera может генерировать ошибки взаимоблокировки, которые не являются взаимоблокировками InnoDB.

Единственное, что вы увидите в SHOW ENGINE INNODB STATUS;, - это тупики InnoDB, когда несколько транзакций на одном сервере пытались получить несовместимые блокировки. Они никогда не происходят при фиксации транзакции - они всегда более ранние, чем это, и являются результатом пессимистической блокировки, встроенной в InnoDB. Они появляются только на сервере, где они произошли.

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

http://galeracluster.com/documentation-webpages/dealingwithmultimasterconflicts.html

...