安装
检查环境 rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
如有缺少则 yum安装
下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/
使用:
pt-heartbeat 主从延迟检测
在主库上创建heartbeat表
CREATE TABLE `heartbeat` (
`ts` varchar(26) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`file` varchar(255) DEFAULT NULL,
`position` bigint(20) unsigned DEFAULT NULL,
`relay_master_log_file` varchar(255) DEFAULT NULL,
`exec_master_log_pos` bigint(20) unsigned DEFAULT NULL,
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, --从库单独加这个字段
PRIMARY KEY (`server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
在主库上执行pt-heartbeat命令
pt-heartbeat -D test --update -uroot -proot
说明:update_time 是我自己加上去的,记录数据被修改的时间。ts是 主库的修改时间,看他俩的差异即可(最好可以展示毫 秒,但未实现出来,可能是版本问题)
pt-table-checksum 主从一致性检测
pt-table-checksum --replicate=test.checksums --databases=test --nocheck-replication-filters --no-check-binlog-format --quiet u=root,p=root@123,h=192.168.1.24,P=3306
解释:
--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。 --no-check-binlog-format : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。 --replicate-check-only :只显示不同步的信息。 --replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。 --databases= :指定需要被检查的数据库,多个则用逗号隔开。 --tables= :指定需要被检查的表,多个用逗号隔开 h=192.168.1.24 :Master的地址 u=root :用户名 p=root@123 :密码 P=3306 :端口
注意:1 需要在从库配置 report_host=从库的ip
report_port=3306pt
2 主从的账号的用户名密码必须一致,否则需要参数recursion-method指定
3 --set-vars innodb_lock_wait_timeout=120 // 命令中设置MySQL参数
pt-table-sync 主从同步数据
pt-table-sync --replicate=test.checksums h=192.168.1.24,u=root,p=root@123,P=3306 h=192.168.1.20,u=root,p=root@123,P=3306 --print
解释:
--replicate= :指定通过pt-table-checksum得到的表,这2个工具差不多都会一直用。 --databases= : 指定执行同步的数据库,多个用逗号隔开。 --tables= :指定执行同步的表,多个用逗号隔开。 --sync-to-master :指定一个DSN,即从的IP,他会通过show processlist或show slave status 去自动的找主。 h=127.0.0.1 :服务器地址,命令里有2个ip,第一次出现的是Master的地址,第2次是Slave的地址。 u=root :帐号。 p=123456 :密码。 --print :打印,但不执行命令。 --execute :执行命令。