стоит на Slave_SQL_Running_State: System lock
SHOW OPEN TABLES WHERE In_use > 0;
указывает на одну и ту же таблицу.
binlog_format ROW, есть некоторые UPDATE-запросы, но на мастере они проходят относительно быстро.
А на слейве всё упирается в System Lock, или Waiting for dependant transaction to commit.
В processlist мастера запрос на update давно прошёл, транзакций активных нет, но слейв всё ещё обрабатывает их.
Подскажите, в какую сторону копать?
надо посмотреть: какая таблица сейчас обрабатывается через mysqlbinlog по координатам из show slave status. Проверить есть ли primary/unique key на этой таблице.
Проверил, у таблицы есть PK/unique key, по бинлогу обновляются 5-6 записей в таблице, и таких транзакций много в бинлоге. Используется Multi-threaded replication.
можно поискать в каких табличках больше строк меняется: https://www.percona.com/blog/2015/01/20/identifying-useful-information-mysql-row-based-binary-logs/
В целом, и по show open tables where In_use=1;, и по бинлогам (бегал глазами по застревающим запросам) понятно, какая таблица всё время пытается закоммититься. Она там всё время одна по сути. cross-database запросов нет. Но ответа на вопрос о лаге реприкации ни бинлог, ни SHOW CREATE TABLE не даёт.
Обсуждают сегодня