zoukankan      html  css  js  c++  java
  • mysql管理工具之pt-heartbeat

    之前我一直用Seconds_behind_master来衡量主从的延迟,今天看到文档,才觉得多么不可靠!以下是官方文档的描述:

    In essence, this field measures the time difference in seconds between the slave SQL thread and the slave I/O thread.

    也就是说,这个变量是描述的是从库上I/O thread和SQL thread之间的时间差。

    下面使用pt-heartbeat监控主从延迟:

    【原理】:

    1:在主库上创建一张heartbeat表,按照一定的时间频率更新该表的字段(把时间更新进去)。

    2:连接到从库上检查复制的时间记录,和从库的当前系统时间进行比较,得出时间的差异。

    【用法】:

    pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop

    【参数说明】

    --check
       检查从的延迟,检查一次就退出,除非指定了--recurse会递归的检查所有的从服务器。
    
    --monitor
       持续监控从的延迟情况。通过--interval指定的间隔时间,打印出从的延迟信息--daemonize
       执行时,放入到后台执行
    
    --file 
       打印--monitor最新的记录到指定的文件,很好的防止满屏幕都是数据的烦恼。
    
    --frames
       在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个,如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)。
    
    --interval
       检查、更新的间隔时间。默认是见是1s。最小的单位是0.01s,最大精度为小数点后两位,因此0.015将调整至0.02--log
       开启daemonized模式的所有日志将会被打印到制定的文件中。
    
    --update
       更新主上的心跳表。
    
    --replace
       使用--replace代替--update模式更新心跳表里的时间字段,这样的好处是不用管表里是否有行。
    
    --stop
      停止运行该工具(--daemonize),在/tmp/目录下创建一个“pt-heartbeat-sentinel” 文件。后面想重新开启则需要把该临时文件删除,才能开启(--daemonize)。
    
    --table
      指定心跳表名,默认heartbeat。
    
    --create-table
      在主上创建心跳监控的表,如果该表不存在。可以自己建立,建议存储引擎改成memory。通过更新该表知道主从延迟的差距。
    CREATE TABLE heartbeat (
      ts varchar(26) NOT NULL,
      server_id  int unsigned NOT NULL PRIMARY KEY,
      file varchar(255) DEFAULT NULL,    -- SHOW MASTER STATUS
      position bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS
      relay_master_log_file varchar(255) DEFAULT NULL,    -- SHOW SLAVE STATUS
      exec_master_log_pos   bigint unsigned DEFAULT NULL  -- SHOW SLAVE STATUS
    ); 

    【使用案例】

        主库:10.10.101.11  端口3306

        从库:10.10.101.11  端口3307

    1、在主库上执行命令:

    /usr/local/bin/pt-heartbeat -D test --create-table -h 10.10.101.11 -P 3306 -u root -p '*******' --update --daemonize

    -D:表示受监控的数据库
    这时,主库中已经创建了下面的表heartbeat:

    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | checksums      |
    | heartbeat      |
    +----------------+
    2 rows in set (0.00 sec)
    
    mysql> select * from heartbeat;
    +----------------------------+-----------+------------------+----------+-----------------------+---------------------+
    | ts                         | server_id | file             | position | relay_master_log_file | exec_master_log_pos |
    +----------------------------+-----------+------------------+----------+-----------------------+---------------------+
    | 2015-11-02T15:01:45.001340 |    113306 | mysql-bin.000021 |  1240408 | mysql-bin.000021      |                 120 |
    +----------------------------+-----------+------------------+----------+-----------------------+---------------------+
    1 row in set (0.00 sec)

    2、在从库上进行延迟监控:

    #执行一次就退出
    [root@10-10-101-11 backup]# /usr/local/bin/pt-heartbeat -D test  -h 10.10.101.11 -P 3307 -uroot -p'*******' --check
    0.00
    [root@10-10-101-11 backup]#

    持续监控:

    [root@10-10-101-11 backup]# /usr/local/bin/pt-heartbeat -D test  -h 10.10.101.11 -P 3307 -uroot -p'*******' --monitor
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]
    0.00s [  0.00s,  0.00s,  0.00s ]

    更加详细请参考官方说明文档:https://www.percona.com/doc/percona-toolkit/2.2/pt-heartbeat.html

  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/4930404.html
Copyright © 2011-2022 走看看