pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
在主库上开启守护进程来更新linuxidc.heartbeat表:
pt-heartbeat -D linuxidc --update -h master-server --daemonize
监控从的延迟情况:
pt-heartbeat -D linuxidc --monitor -h slave-server #一直执行,不退出 pt-heartbeat -D linuxidc--check h=slave-server #执行一次就退出
常用参数:
注意:需要指定的参数至少有 --stop,--update,--monitor,--check。其中--update,--monitor和--check是互斥的,--daemonize和--check也是互斥。 --ask-pass 隐式输入MySQL密码 --charset 字符集设置 --check 检查从的延迟,检查一次就退出,除非指定了--recurse会递归的检查所有的从服务器。 --check-read-only 如果从服务器开启了只读模式,该工具会跳过任何插入。 --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 ); heratbeat表一直在更改ts和position,而ts是我们检查复制延迟的关键。 --daemonize 执行时,放入到后台执行 --user -u,连接数据库的帐号 --database -D,连接数据库的名称 --host -h,连接的数据库地址 --password -p,连接数据库的密码 --port -P,连接数据库的端口 --socket -S,连接数据库的套接字文件 --file 【--file=output.txt】 打印--monitor最新的记录到指定的文件,很好的防止满屏幕都是数据的烦恼。 --frames 【--frames=1m,2m,3m】 在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个,如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)。 --interval 检查、更新的间隔时间。默认是见是1s。最小的单位是0.01s,最大精度为小数点后两位,因此0.015将调整至0.02。 --log 开启daemonized模式的所有日志将会被打印到制定的文件中。 --monitor 持续监控从的延迟情况。通过--interval指定的间隔时间,打印出从的延迟信息,通过--file则可以把这些信息打印到指定的文件。 --master-server-id 指定主的server_id,若没有指定则该工具会连到主上查找其server_id。 --print-master-server-id 在--monitor和--check 模式下,指定该参数则打印出主的server_id。 --recurse 多级复制的检查深度。模式M-S-S...不是最后的一个从都需要开启log_slave_updates,这样才能检查到。 --recursion-method 指定复制检查的方式,默认为processlist,hosts。 --update 更新主上的心跳表。 --replace 使用--replace代替--update模式更新心跳表里的时间字段,这样的好处是不用管表里是否有行。 --stop 停止运行该工具(--daemonize),在/tmp/目录下创建一个“pt-heartbeat-sentinel” 文件。后面想重新开启则需要把该临时文件删除,才能开启(--daemonize)。 --table 指定心跳表名,默认heartbeat。
测试环境:
Master 192.168.0.10:3306 Slave 192.168.0.20:3306
1,在主上运行:--daemonize表示守护进程,后台运行。
[root@linuxidc_192.168.0.10 ~]# pt-heartbeat --user=root --ask-pass --host=127.0.0.1 --create-table -D linuxidc --interval=1 --update --replace --daemonize Enter password: [root@linuxidc_192.168.0.10 ~]#
[root@linuxidc_192.168.0.10 ~]# pgrep -fl pt-heartbeat 4156 perl /usr/bin/pt-heartbeat -D linuxidc --table=heartbeat --create-table --update -h 127.0.0.1 -uroot --ask-pass --daemonize [root@linuxidc_192.168.0.10 ~]#
3.在主上运行监测复制延迟