Seconds_Behind_Master?SHOW SLAVE STATUS 的 Seconds_Behind_Master 僅反映 **SQL 執行緒相對 I/O 執行緒的延遲**,不包含網路傳輸、I/O 執行緒排隊時間。slave_parallel_workers > 0)下,該值**極不可靠**,常顯示 0 實際卻有大量積壓。heartbeat 表,每 --interval 秒更新一行 ts = NOW(6)(微秒精度)。ts 與本地 NOW(6) 差值 → **真實端到端延遲**(含網路、I/O、SQL 全鏈路)。server_id 欄位區分來源,支援**任意深度鏈路監控**(指定 --master-server-id)。yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-Digest-MD5 perl-DBD-MySQL
wget percona.com/get/percona-toolkit.tar.gz
tar zxf percona-toolkit-*.tar.gz
cd percona-toolkit-*
perl Makefile.PL && make && make install
pt-heartbeat \
--user=root --ask-pass \
--host=127.0.0.1 \
--create-table -D monitor_db \
--interval=1 --update \
--replace --daemonize
--create-table -D monitor_db:在 monitor_db 建立 heartbeat 表(含 id, ts, server_id, file, position)。--interval=1:每秒更新一次(可調 0.1~10 秒)。--replace:使用 REPLACE INTO 確保單行更新。--daemonize:背景常駐運行。pt-heartbeat \
--user=root --ask-pass \
-h 192.168.31.207 \
-D monitor_db --table=heartbeat \
--monitor \
--master-server-id=100 # 可選:指定監控來源 master 的 server_id
0.00s [ 0.00s, 0.00s, 0.00s ]
0.01s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
# 1. 寫入文本檔給 node_exporter 收集
pt-heartbeat ... --monitor --format=json | jq -r '.delay' > /var/lib/node_exporter/textfile_collector/mysql_replication_delay.prom
# 2. Prometheus 抓取
# 3. Grafana 面板:當前延遲、1m/5m/15m 平均、歷史趨勢、閾值告警
heartbeat 表**必須被複寫**(不可設定 replicate-ignore-table 排除)。binlog_format=ROW 或 MIXED,確保 REPLACE INTO 正確複寫。pt-heartbeat 官方文檔 — 含完整參數表、JSON 輸出格式、多層複寫監控範例。