您的位置:首页 > 数据库 > MySQL

percona-toolkit 基本使用

2017-11-30 17:09 447 查看
运行环境:

Master:10.168.1.216

Slave:10.168.1.217

一、pt-heartbeat

监控mysql复制延迟

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

pt-heartbeat -D ismarthome --update --user=root --password=123456 -h10.168.1.216 --create-table –daemonize

1.2、监控复制在slave上的落后程度(会一直监控)

pt-heartbeat -D ismarthome --monitor --user=root --password=daqi-123456 -h10.168.1.217

1.3、监控复制在slave上的落后程度(监控一次退出)

pt-heartbeat -D ismarthome --check --user=root --password=daqi-123456 -h10.168.1.217

二、 pt-slave-find

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

2.1、查找主服务器的mysql有所有从的层级关系

pt-slave-find --user=root --password=123456--host=10.168.1.216

三、pt-slave-restart

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

3.1、监视从,跳过1个错误

pt-slave-restart --user=root --password=daqi-123456 --host=10.168.1.217 --skip-count=1

3.2、监视从,跳过错误代码为1062的错误

pt-slave-restart --user=root --password=daqi-123456 --host=10.168.1.217 --error-numbers=1062

四、pt-table-checksum

检查数据是否一致(在主库执行)

4.1、比较test数据库同步是否一致,结果显示所有的表

pt-table-checksum  --nocheck-replication-filters --databases=testDb --replicate=testDb.checksums --create-replicate-table  --host=10.168.1.216  --port 3306  -uroot -p123456

参数说明:第一次运行的时候需要添加--create-replicate-table参数,如果不加这个就需要手工运行添加表结构的SQL,表结构SQL如下:

CREATE TABLE checksums (

   db             char(64)     NOT NULL,

   tbl            char(64)     NOT NULL,

   chunk          int          NOT NULL,

   chunk_time     float            NULL,

   chunk_index    varchar(200)     NULL,

   lower_boundary text             NULL,

   upper_boundary text             NULL,

   this_crc       char(40)     NOT NULL,

   this_cnt       int          NOT NULL,

   master_crc     char(40)         NULL,

   master_cnt     int              NULL,

   ts             timestamp    NOT NULL,

   PRIMARY KEY (db, tbl, chunk),

   INDEX ts_db_tbl (ts, db, tbl)

) ENGINE=InnoDB

--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。

--no-check-binlog-format      :不检查复制的binlog模式,要是binlog模式是ROW,则会报错。

--replicate-check-only        :只显示不同步的信息。(注意:要谨慎使用,此参数不会生成新的checksums数据,只会根据checksums表已经有的数据来显示。)

--replicate=                  :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。

--databases=                  :指定需要被检查的数据库,多个则用逗号隔开。

--tables=                     :指定需要被检查的表,多个用逗号隔开

h=127.0.0.1                   :Master的地址

u=root                        :用户名

p=123456                      :密码

P=3306                        :端口

运行结果行显示的结果参数说明:

TS                  :完成检查的时间。

ERRORS       :检查时候发生错误和警告的数量。

DIFFS             :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。

ROWS             :表的行数。

CHUNKS       :被划分到表中的块的数目。

SKIPPED       :由于错误或警告或过大,则跳过块的数目。

TIME               :执行的时间。

TABLE             :被检查的表名。

备注: 

(pt-table-checksum  其工作原理是通过计算每个表的散列值 并将计算过程在服务器上重放 从而拿到主从各自的散列值做比较,但是pt-table-checksum 不是直接计算整个表的散列值,而是分块计算避免服务器长时间延时  因此在计算散列过程重放时是基与statement 不能基于row)

五、pt-table-sync

高效同步mysql表的数据

原理:总是在主上执行数据的更改,再同步到从上,不会直接更改成从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行execute之前最好先换成--print或--dry-run查看一下会变更哪些数据。

--print              :打印,但不执行命令。

--execute            :执行命令。

5.1、同步Master(10.168.1.216)上a表数据到Slave(10.168.1.217),在执行之前可以用--execute参数换成--print来查看会变更什么东西,命令里有2个ip,第一次出现的是M的地址,第2次是Slave的地址

查看:pt-table-sync --print --user=root --password=123456 h=10.168.1.216,D=testDb,t=aaa h=192.168.3.92

同步:pt-table-sync --execute --user=root --password=123456 h=10.168.1.216,D=testDb,t=aaa h=192.168.3.92

5.2、同步Master(10.168.1.216)上数据到Slave(10.168.1.217)

pt-table-sync --execute --sync-to-master --user=root --password=123456  h=10.168.1.217 --database testDb

5.3、只同步指定的a表

pt-table-sync --execute --sync-to-master --user=root --password=123456  h=10.168.1.217,D=testDb,t=a

5.4、根据pt-table-checksum的结果进行数据同步

pt-table-sync --execute --replicate testDb.checksums --user=root --password=123456 h=10.168.1.216

5.5、根据pt-table-checksum使从的数据和主的数据一致

pt-table-sync --execute --replicate test.checksums --user=root --password=123456  --sync-to-master h=10.168.1.217,D=testDb,t=a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  percona-toolkit mysql