Как получить временную метку коммитов с использованием репликации MySql? - PullRequest
0 голосов
/ 22 ноября 2018

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

Читая его справочное руководство , я обнаружил, что могу получить полезную информацию в базе данных performance_schema.Когда я просматриваю таблицу replication_connection_status на подчиненном сервере, я могу найти среди прочего следующую информацию:

  • Когда исходный мастер совершил транзакцию ( LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP )
  • Когда непосредственный мастер совершил транзакцию ( LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP ).
  • Когда ведомый начал и закончил записывать обновления в свой релейный журнал ( LAST_QUEUEST_ART_ARTEART_TRANS, LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP ).

Но в ней отсутствует информация о том, когда транзакция была совершена на этом подчиненном сервере.

Альтернативное решение: Выполните репликацию этих обновлений с подчиненного сервера на третий сервер (его основным будет подчиненный сервер, от которого мы пытаемся получить эту информацию), а затем просмотрите столбец LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP на третьем сервере, который будет, когда главный подчиненный сервер совершит транзакцию.

Возможное решение: Таблица events_transactions_history может содержать время, когдатранзакция завершилась, но формат времени сбивает с толку.Согласно 2 :

Базовая линия таймера («нулевое время») происходит при инициализации схемы производительности во время запуска сервера.Значения TIMER_START и TIMER_END в событиях представляют пикосекунды с базовой линии.Значения TIMER_WAIT - это длительности в пикосекундах.

Я понятия не имею, как узнать, каким именно будет этот «ноль времени», все, что нам дают, это то, что оно происходит во время запуска сервера, но какЯ получаю точное время?

И, конечно, если есть более простое решение, которое я пропустил, дайте мне знать.

Спасибо.

...