Помоги мне понять mk-heartbeat

Seconds_Behind_Master от SHOW SLAVE STATUS считается ненадежной мерой Slave Lag. mk-heartbeat часто предлагается в качестве надежной альтернативы.

Теперь mk-heartbeat даже не нужно, чтобы раб работал.

http://www.maatkit.org/doc/mk-heartbeat.html

Выдержка:

mk-heartbeat - это система мониторинга задержки репликации MySQL и PostgreSQL, состоящая из двух частей, которая не требует работы подчиненного устройства (другими словами, она не зависит от SHOW SLAVE STATUS на MySQL).

Итак, я понимаю, что вы создаете DB/ таблицу на Master, запускаете mk-heartbeat с --update следующим образом:

./mk-heartbeat -D heart --table beat -u heartbeat -p XXXXXXXXX --update -h 192.168.2.80

А затем на подчиненном устройстве вы указываете mk-heartbeat на базу данных / таблицу на главном устройстве (т. Е. Выполняете оператор GRANT на главном устройстве для предоставления привилегий ведомому устройству) и запускаете с --monitor следующим образом:

./mk-heartbeat -D heart --table beat -u heartbeat_slave -p XXXXXXXXX --monitor -h 192.168.2.80

Я сделал именно это, и даже при обновлении многократно более 2,8 млн. Строк в таблице с образцами зарплат сотрудников MySQL (которая создает отставание ведомого, по крайней мере, в соответствии с ненадежным Seconds_Behind_Master), я никогда не вижу изменения mk-heartbeat --monitor от:

0s [  0.00s,  0.00s,  0.00s ]

Может быть, это тот случай, когда я не произвел достаточную задержку и что согласно документам mk-heartbeat события репликации распространяются менее чем за полсекунды, и я могу ожидать нулевую задержку:

MK-Heartbeat имеет разрешение в одну секунду. Это зависит от того, насколько синхронизированы часы на главном и подчиненном серверах через NTP. Проверки --update происходят на грани секунды, а проверки --monitor происходят на полпути между секундами. Пока часы серверов не сильно искажены, а события репликации распространяются менее чем за полсекунды, mk-heartbeat сообщит о нулевой задержке.

(Часы моих серверов используют NTP и синхронизированы.)

Но Seconds_Behind_Master отстает на сотни секунд, поэтому я думаю, что они не распространяются менее чем за полсекунды, поэтому я все еще не уверен, получаю ли я точное представление об утилите mk-heartbeat или нет.

Хотелось бы услышать от любого, кто развернул этот инструмент для мониторинга их репликации MySQL.

Заранее спасибо.

ура

2 ответа

Решение

Вы близки, но ваша проблема в том, что оба экземпляра указывают на мастера. Вам нужно, чтобы один экземпляр обновлял мастер каждую секунду, а второй - для чтения ведомого каждую секунду.

Также обратите внимание, что он вообще не должен работать на реальных серверах баз данных, он использует обычное клиентское соединение mysql. Я запускаю мой с моего сервера кактусов. Вот мой продезинфицированный /etc/rc.local для примера:

/ usr / bin / mk-heartbeat -D maatkit -u maatkit -paardvark --update -h sql-master.fake.net --daemonize
/ usr / bin / mk-heartbeat -D maatkit -u maatkit -paardvark -h sql-slave.fake.net --monitor --file /tmp/sql-slave.heartbeat --daemonize

Вот что я делаю:

mk-heartbeat -D maatkit -u maatkit -p pass --update -h master
mk-heartbeat -D maatkit -u maatkit -p pass -h slave --monitor

Когда я запускаю выше, выходной фрагмент

1618s [ 53.92s, 10.78s,  3.59s ]
1619s [ 80.90s, 16.18s,  5.39s ]
1620s [ 107.90s, 21.58s,  7.19s ]
1621s [ 134.92s, 26.98s,  8.99s ]
1622s [ 161.95s, 32.39s, 10.80s ]
1623s [ 189.00s, 37.80s, 12.60s ]
1624s [ 216.07s, 43.21s, 14.40s ]
1625s [ 243.15s, 48.63s, 16.21s ]

Цифры просто медленно растут.

Таблицу сердцебиения нужно копировать на раба? Это то, что мне не хватает?

Другие вопросы по тегам