程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql 主從延時監控,mysql主從延時

Mysql 主從延時監控,mysql主從延時

編輯:MySQL綜合教程

Mysql 主從延時監控,mysql主從延時


介紹

主從延時在主從環境中是一個非常值得關注的問題,有時候我們可以通過show slave status命令查看Seconds_Behind_Master值來分析主從的延時情況;但是由於該值是來自binlog文件語句的完成時間,當一條SQL執行時間很長的時候那麼該值可能就不准確了,那麼有沒有什麼工具可以很准確的分析主從的延時情況呢? 在PT系列工具裡面的pt-heartbeat工具很好的解決了這個問題。

 

原理

pt工具在主庫上面創建一張測試表,以一秒的頻率去更新這個的記錄並把當前時間寫入到字段中,通過分析主從同步過來的時間和當前時間做對比得出時間差。

 

方法

 1.在主庫上創建後台update進程

pt-heartbeat -uroot -proot  -D chenmh --create-table --update  --daemonize

-u:連接主庫的用戶

-p:連接主庫的用戶密碼

-D:主庫上存在的數據庫,這個數據庫隨便指定,但是必須存在

--create-table:默認會在主庫指定的數據庫中創建一個“heartbeat”表

 

2.監控從庫

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1 

這裡面的參數除了--master-server-id是主庫的serverid,其它的都是指從庫,特別注意--master-server-id一定不能寫錯否則結果就是錯誤的,記錄了日志之後就可以對該值做監控預警了

3.寫入監控日志做預警分析

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1  --file=/tmp/heart.log
cat /tmp/heart.log |awk -F "s"  '{print $1}'

 4.停止後台更新操作

pt-heartbeat --stop

 當你停止了後台更新進程會在/tmp目錄下面產生一個pt-heartbeat-sentinel文件,下次再啟動該後台進程之前必須先刪除該文件,否則無法啟動。

rm -rf /tmp/pt-heartbeat-sentinel

 

參數

Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
其中--update, --moniter,--check,--stop都是單獨使用的,並且--update, --monitor, and --check are mutually exclusive
--daemonize and --check are mutually exclusive.他們之間還是存在互斥。
Options:

  --ask-pass                  使用密碼進行mysql連接時給予提示
--charset=s -A 默認的字符選項 --check 執行一次從庫的監控就結束 --check-read-only 如果是只讀的服務器那麼使用該選項會保持插入
--config=A 使用逗號分隔,如果指定了,那麼該參數作為命令行的第一個選項
--create-table 如果表不存在創建表heartbeat
--daemonize 創建後台的更新shell
--database=s -D 指定連接的數據庫
--dbi-driver=s Specify a driver for the connection; mysql and Pg are supported (default mysql) --defaults-file=s -F 通過提供的文件進行mysql連接
--file=s 輸出最新的 --monitor監控信息到指定的文件
--frames=s 設置時間周期(default 1m,5m,15m) --help 顯示幫助信息 --host=s -h 指定連接的host --[no]insert-heartbeat-row 在使用--tables的時候默認是插入一條記錄到表heartbeat前提是表中不存在該記錄行 --interval=f 指定更新和監控heartbeat表的頻率默認是1S
--log=s 當使用daemonized進行後台更新操作時輸出所有的信息到指定的該文件 --master-server-id=s 指定主的server-id
--monitor 監控從服務器的參數選項 --password=s -p 指定密碼 --pid=s 創建pid文件 --port=i -P 指定連接時使用的端口
--print-master-server-id 打印輸出master-server-id
--recurse=i Check slaves recursively to this depth in --check mode --recursion-method=a Preferred recursion method used to find slaves ( default processlist,hosts) --replace 使用replace替換--UPDATE操作
--run-time=m 指定監控的時長,單位有: s=seconds, m=minutes, h=hours, d=days; 如果比指定默認是以秒為單位一直監控下去
--sentinel=s Exit if this file exists (default /tmp/pt- heartbeat-sentinel) --set-vars=A Set the MySQL variables in this comma-separated list of variable=value pairs --skew=f 指定執行從庫檢查的延時時長默認是0.5
--socket=s -S 指定連接時使用的socket文件
--stop 停止後台更新進程並生成--sentinel指定的文件 --table=s 指定更新的表(默認是heartbeat) --update 更新主的heartbeat表,這個參數是後台進程必須的參數也可以用--replace替代 --user=s -u 指定用戶名
--utc 忽略系統時間僅使用UTC --version 顯示版本信息 --[no]version-check Check for the latest version of Percona Toolkit, MySQL, and other programs (default yes)

 

總結

 可以通過這個監控的輸出文件信息做一個郵件報警,有興趣可以去寫這樣的一個shell

 

 

 

備注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved