Я пытался исследовать проблемы, связанные с отказом приложения, и у меня есть основания полагать, что виноват где-то в серверной части базы данных. С этой целью я начал собирать метрики из бэкэнд-кластера MariaDB Galera (в настоящее время работающего на MariaDB версии 10.3.16), надеясь, что сбои отразятся на собранных метриках.
Действительно, примерно за 12 часов до того, как приложение начало срываться, значения, сообщаемые «главным» узлом (то есть узлом, на который приложение направляет записи) для Innodb_row_lock_time начали расти с невиданной ранее скоростью. Вот ссылка на график, демонстрирующий этот факт за последнюю неделю:
Изменение Innodb_row_lock_time в минуту
Обратите внимание, что на графике отображается изменение, а не текущее значение показателя. Серверы MariaDB опрашиваются каждые 90 секунд, а точки данных на графике относятся к изменениям в минуту. Большое падение в конце графика указывает время, когда служба MariaDB была перезапущена на главном узле.
Мой вопрос заключается в том, как продолжить исследование этого симптома и, возможно, определить причину запросов или операции. Я также регистрирую вывод InnoDB Monitor в файлах журнала, но мне не удалось найти ничего необычного в то время, когда wiat_time быстро рос (хотя я не эксперт по БД).
Могу ли я включить какие-либо другие функции ведения журнала, чтобы предоставить дополнительную информацию по этому поводу? И если InnoDB Monitor Output должен предоставить необходимую информацию, что именно я должен искать? Какая операция может привести к блокировке строк так долго, учитывая внезапное проявление проблемы?
Заранее спасибо.