萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Percona pt-heartbeat:MySQL 複寫延遲精準監控實戰部署

為什麼不用 Seconds_Behind_Master?

  • SHOW SLAVE STATUS 的 Seconds_Behind_Master 僅反映 **SQL 執行緒相對 I/O 執行緒的延遲**,不包含網路傳輸、I/O 執行緒排隊時間。
  • 並行複寫(slave_parallel_workers > 0)下,該值**極不可靠**,常顯示 0 實際卻有大量積壓。
  • 無法監控**多層複寫鏈**(A→B→C)中任意節點對源頭的真實延遲。

pt-heartbeat 原理

  1. **Master 端**:建立 heartbeat 表,每 --interval 秒更新一行 ts = NOW(6)(微秒精度)。
  2. **Slave 端**:複寫該表,讀取 ts 與本地 NOW(6) 差值 → **真實端到端延遲**(含網路、I/O、SQL 全鏈路)。
  3. server_id 欄位區分來源,支援**任意深度鏈路監控**(指定 --master-server-id)。

部署步驟(CentOS 7 / Percona Toolkit 2.2+)

1. 安裝 Percona Toolkit

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

2. Master 建立心跳表並啟動更新守護程序

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:背景常駐運行。

3. Slave 端啟動監控模式

pt-heartbeat \
  --user=root --ask-pass \
  -h 192.168.31.207 \
  -D monitor_db --table=heartbeat \
  --monitor \
  --master-server-id=100   # 可選:指定監控來源 master 的 server_id

4. 輸出解讀

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 分鐘、5 分鐘、15 分鐘滑動平均**。
  • 持續 > 1 秒或平均值上升趨勢 → 告警。

整合監控系統(Prometheus + Grafana)

# 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 平均、歷史趨勢、閾值告警

關鍵前置條件

  • 主從時間同步(NTP/Chrony):pt-heartbeat **嚴格依賴時間**,時鐘偏移 1 秒 = 延遲誤差 1 秒。
  • heartbeat 表**必須被複寫**(不可設定 replicate-ignore-table 排除)。
  • Master 必須啟用 binlog_format=ROW 或 MIXED,確保 REPLACE INTO 正確複寫。

官方文檔與延伸閱讀

pt-heartbeat 官方文檔 — 含完整參數表、JSON 輸出格式、多層複寫監控範例。

copyright © 萬盛學電腦網 all rights reserved