Помоги мне понять 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 ]
Цифры просто медленно растут.
Таблицу сердцебиения нужно копировать на раба? Это то, что мне не хватает?