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

  • 相关阅读:
    POJ 2000 Gold Coins
    HDU 5804 Price List
    POJ 1316 Self Numbers
    HDU 5783 Divide the Sequence
    rabbitmq基础使用
    centos7安装RabbitMQ
    编程之路┊一个程序员走过的路
    jquery layer弹出层插件
    SWFUpload 2.5.0版 官方说明文档 中文翻译版
    C# 格式化字符串,日期,字符串操作汇总
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/4930404.html
Copyright © 2011-2022 走看看