Когда устанавливается отметка времени в бинлогах MySQL
У меня был поиск по предыдущим вопросам, но я не могу найти точное соответствие с моим вопросом:
В какой момент во время транзакции запроса устанавливается временная метка двоичного журнала, а затем записывается в двоичный журнал?
Контекст: я работал с БД, которая использует репликацию master/slave. Довольно часто ведомое устройство отстает от главного сервера, и я уверен, что это просто из-за большого количества транзакций в двоичном журнале, которые используют одну и ту же метку времени. Когда я говорю много, я говорю о более чем 150 временных метках, принадлежащих более чем 9000 записей в журнале за 1 час (плюс остальные, которые вернулись под 9000 записей). Это было найдено с помощью:
mysqlbinlog bin-log.0001 | grep 'TIMESTAMP' | uniq -c | awk '{if ($1>9000){print $0}} ' | sed -e 's/\/\*\!\*\/;//g' | gawk -F '=' '{cmd="date -d @"$2; cmd | getline d; print $1"="$2"\t("d")"; close(d)}'
Поэтому я в основном пытаюсь тренироваться, если количество транзакций, совместно использующих метку времени, является отражением рабочей нагрузки на главном сервере, и являются ли эти числа необычными.
При построении графика Second_behind_master он показывает линейный рост, а затем внезапный спад, который, по-видимому, предполагает то же самое.
Версия MySQL 5.6.33.
1 ответ
Существует несколько возможных причин "отставания рабов", на которые здесь сложно ответить подробно. Метка времени двоичного журнала записывается в начале транзакции.
Вот полезный пост, в котором рассказывается, как определить причину ваших симптомов, здесь: https://www.percona.com/blog/2014/05/02/how-to-identify-and-cure-mysql-replication-slave-lag/ Например, он объясняет, как параметр Seconds_Behind_Master может вводить в заблуждение, потому что он измеряет только разницу между временными метками журнала, который последний раз выполнялся, по сравнению с записью журнала, недавно загруженной IO_THREAD.
На сайте вы найдете много других ресурсов, которые могут вам помочь. Это включает в себя Percona Toolkit, упомянутый в сообщении в блоге, которое, как и все программное обеспечение Percona, полностью бесплатное и с открытым исходным кодом.
Раскрытие: я работаю на Перкону.