Percona Toolkit使用教程之复制类工具

percona-toolkit使用教程之复制类工具

1.  pt-heartbeat

功能介绍:

监控mysql复制延迟

用法介绍:

pt-heartbeat [OPTION...] [DSN] --update|--monitor|--check|--stop

测量复制落后主mysql或者主PostgreSQL多少时间,你可以使用这个脚本去更新主或者监控复制,具体用法见后面的示例.

原理:pt-heartbeat通过真实的复制数据来确认mysql和postgresql复制延迟,这个避免了对复制机制的依赖,从而能得出准确的落后复制时间,包含两部分:第一部分在主上pt-heartbeat的--update线程会在指定的时间间隔更新一个时间戳,第二部分是pt-heartbeat的--monitor线程或者--check线程连接到从上检查复制的心跳记录(前面更新的时间戳),并和当前系统时间进行比较,得出时间的差异。

你可以手工创建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 NUL-- SHOW SLAVE STATUS

);

使用示例:

范例1:创建一个后台进程定期更新主上的test库的heartbeat表()默认是1s,可以--interval指定,执行后会成一个heartbeat表,test库为我监控的同步库:

pt-heartbeat -D test --update --user=root --password=zhang@123 -h192.168.3.135 --create-table –daemonize

范例2:监控复制在slave上的落后程度(会一直监控):

pt-heartbeat -D test --monitor --user=root --password=zhang@123 -h192.168.3.92

监控结果如下:

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 ]

范例3:监控复制在slave上的落后程度(监控一次退出):

pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92

范例4:监控PostgreSQL需要添加--dbi-driver Pg:

pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92 --dbi-driver Pg

2. pt-slave-delay

功能介绍:

设置从服务器落后于主服务器指定时间。

用法介绍:

pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]

原理:通过启动和停止复制sql线程来设置从落后于主指定时间。默认是基于从上relay日志的二进制日志的位置来判断,因此不需要连接到主服务器,如果IO进程不落后主服务器太多的话,这个检查方式工作很好,如果网络通畅的话,一般IO线程落后主通常都是毫秒级别。一般是通过--delay and --delay"+"--interval来控制。--interval是指定检查是否启动或者停止从上sql线程的频繁度,默认的是1分钟检查一次。

使用示例:

范例1:使从落后主1分钟,并每隔1分钟检测一次,运行10分钟

pt-slave-delay --user=root --password=zhang@123 --delay 1m --run-time 10m --host=192.168.3.92

如果不加--run-time参数会一直执行。

范例2:使从落后主1分钟,并每隔15秒钟检测一次,运行10分钟

pt-slave-delay --user=root --password=zhang@123 --delay 1m --interval 15s --run-time 10m --host=192.168.3.92

运行结果如下:

2012-05-20T16:34:50 slave running 0 seconds behind

2012-05-20T16:34:50 STOP SLAVE until 2012-05-20T16:35:50 at master position mysql-bin.000032/4392054

2012-05-20T16:35:05 slave stopped at master position mysql-bin.000032/4397124

2012-05-20T16:35:20 slave stopped at master position mysql-bin.000032/4402194

2012-05-20T16:35:35 slave stopped at master position mysql-bin.000032/4407264

2012-05-20T16:35:50 no new binlog events

2012-05-20T16:36:05 START SLAVE until master 2012-05-20T16:35:05 mysql-bin.000032/4397124

3. pt-slave-find

功能介绍:

查找和打印mysql所有从服务器复制层级关系

用法介绍:

pt-slave-find [OPTION...] MASTER-HOST

原理:连接mysql主服务器并查找其所有的从,然后打印出所有从服务器的层级关系。

使用示例:

范例1:查找主服务器为192.168.3.135的mysql有所有从的层级关系:

pt-slave-find --user=root --password=zhang@123 --host=192.168.3.135

4. pt-slave-restart

功能介绍:

监视mysql复制错误,并尝试重启mysql复制当复制停止的时候

用法介绍:

pt-slave-restart [OPTION...] [DSN]

监视一个或者多个mysql复制错误,当从停止的时候尝试重新启动复制。你可以指定跳过的错误并运行从到指定的日志位置。

使用示例:

范例1:监视192.168.3.92的从,跳过1个错误

pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --skip-count=1

范例2:监视192.168.3.92的从,跳过错误代码为1062的错误。

pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --error-numbers=1062

5. pt-table-checksum

功能介绍:

检查mysql复制一致性

用法介绍:

pt-table-checksum [OPTION...] [DSN]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18526.html