Mysql入门percona-toolkit对MySQL的复制和监控类操作教程
《Mysql入门percona-toolkit对MySQL的复制和监控类操作教程》要点: MYSQL入门复制类工具 MYSQL入门
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
);
MYSQL入门? MYSQL入门
pt-heartbeat -D test --update --user=root --password=zhang@123 -h192.168.3.135 --create-table Cdaemonize
MYSQL入门范例2:监控复制在slave上的落后程度(会一直监控): MYSQL入门
pt-heartbeat -D test --monitor --user=root --password=zhang@123 -h192.168.3.92
MYSQL入门监控结果如下: MYSQL入门
0.00s [ 0.00s,0.00s,0.00s ]
0.00s [ 0.00s,0.00s ]
MYSQL入门范例3:监控复制在slave上的落后程度(监控一次退出): MYSQL入门
pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92
MYSQL入门范例4:监控PostgreSQL需要添加--dbi-driver Pg: MYSQL入门
pt-heartbeat -D test --check --user=root --password=zhang@123 -h192.168.3.92 --dbi-driver Pg
MYSQL入门? MYSQL入门
pt-slave-delay --user=root --password=zhang@123 --delay 1m --run-time 10m --host=192.168.3.92
MYSQL入门如果不加--run-time参数会一直执行. MYSQL入门
pt-slave-delay --user=root --password=zhang@123 --delay 1m --interval 15s --run-time 10m --host=192.168.3.92
MYSQL入门运行结果如下: MYSQL入门
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
MYSQL入门? MYSQL入门
pt-slave-find --user=root --password=zhang@123 --host=192.168.3.135
MYSQL入门4. pt-slave-restart MYSQL入门
pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --skip-count=1
MYSQL入门???????? 范例2:监视192.168.3.92的从,跳过错误代码为1062的错误. MYSQL入门
pt-slave-restart --user=root --password=zhang@123 --host=192.168.3.92 --error-numbers=1062
MYSQL入门5. pt-table-checksum MYSQL入门
REPLACE INTO `test`.`checksums` (db,tbl,chunk,chunk_index,lower_boundary,upper_boundary,this_cnt,this_crc) SELECT 'test','zhang','1',NULL,COUNT(*) AS cnt,COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#',`id`,`name`,CONCAT(ISNULL(`name`)))) AS UNSIGNED)),10,16)),0) AS crc FROM `test`.`zhang` /*checksum table*/;
UPDATE `test`.`checksums` SET chunk_time = '0.000563',master_crc = '31012777',master_cnt = '4' WHERE db = 'test' AND tbl = 'zhang' AND chunk = '1'
MYSQL入门从这里可以很明显的看出原理了,前面已经说了,这里就不赘述了. MYSQL入门
pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --create-replicate-table --host=192.168.3.135 --port 3306 -uroot -pzhang@123
MYSQL入门参数说明:第一次运行的时候需要添加--create-replicate-table参数,如果不加这个就需要手工运行添加表结构的SQL,表结构SQL如下: MYSQL入门
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,chunk),INDEX ts_db_tbl (ts,db,tbl)
) ENGINE=InnoDB;
MYSQL入门之所以使用--nocheck-replication-filters参数是因为我的my.cnf配置了replicate-ignore-db和replicate-wild-do-table等参数.另外需要特别注意执行的checksums所在的数据库必须是同步的数据库.我刚开始使用的时候摸索的很久,官网也没有范例.呵呵! MYSQL入门
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
05-23T16:19:29 0 1 2 1 0 0.006 test.aaa
05-23T16:19:29 0 0 1 1 0 0.017 test.bbb
05-23T16:19:29 0 0 0 1 0 0.007 test.category_part
05-23T16:19:31 0 0 233617 6 0 1.887 test.collect_data
05-23T16:19:34 0 0 250346 5 0 2.709 test.effective_user
05-23T16:19:34 0 1 1 1 0 0.008 test.heartbeat
05-23T16:19:39 0 0 1000000 11 0 5.353 test.oss_pvinfo2
MYSQL入门从结果中,我们可以看到test.aaa和test.heartbeat表的DIFFS不为0,那么就是这两个表不同步了. MYSQL入门
pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --replicate-check-only --lock-wait-timeout=120 --host=192.168.3.135 --port 3306 --user=root --password=zhang@123
MYSQL入门结果如下: MYSQL入门
Differences on localhost.localdomain
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
test.aaa 1 1 1
test.heartbeat 1 0 1
MYSQL入门从结果可以看出,只显示了两个不同步的表. MYSQL入门6. pt-table-sync MYSQL入门
pt-table-sync --execute --user=root --password=zhang@123 h=192.168.3.135,D=test,t=aaa h=192.168.3.92
MYSQL入门范例2:将主的test数据库同步到192.168.3.92,使从上具有一样的数据. MYSQL入门
pt-table-sync --execute --sync-to-master --user=root --password=zhang@123 h=192.168.3.92 --database test
MYSQL入门范例3:只同步指定的表 MYSQL入门
pt-table-sync --execute --sync-to-master --user=root --password=zhang@123 h=192.168.3.92,t=aaa
MYSQL入门范例4:根据pt-table-checksum的结果进行数据同步 MYSQL入门
pt-table-sync --execute --replicate test.checksums --user=root --password=zhang@123 h=192.168.3.135
MYSQL入门范例5:根据pt-table-checksum使从的数据和主的数据一致 MYSQL入门
pt-table-sync --execute --replicate test.checksums --user=root --password=zhang@123 --sync-to-master h=192.168.3.92,t=aaa
MYSQL入门监控类工具 MYSQL入门
pt-deadlock-logger --user=root --password=zhang@123 h=localhost Cprint
MYSQL入门范例2:将本地的mysql死锁信息记录到数据库的表中,也打印出来 MYSQL入门
pt-deadlock-logger --user=root --password=zhang@123 h=localhost --print D=test,t=deadlocks
MYSQL入门2. pt-fk-error-logger MYSQL入门
Use of uninitialized value in concatenation (.) or string at /usr/bin/pt-fk-error-logger line 2045
MYSQL入门我怀疑是这个程序有问题,回头换一个版本试一下或者调试一下那个程序. MYSQL入门
pt-mext -- mysqladmin ext -uroot -pzhang@123 -i10 -c3
MYSQL入门? MYSQL入门
pt-query-digest --user=root --password=zhang@123 /data/dbdata/localhost-slow.log
MYSQL入门范例2:重新回顾满查询日志,并将结果保存到query_review中,注意query_review表的表结构必须先建好,表结构如下: MYSQL入门
CREATE TABLE query_review (
checksum BIGINT UNSIGNED NOT NULL PRIMARY KEY,fingerprint TEXT NOT NULL,sample TEXT NOT NULL,first_seen DATETIME,last_seen DATETIME,reviewed_by VARCHAR(20),reviewed_on DATETIME,comments TEXT
);
MYSQL入门命令如下: MYSQL入门
pt-query-digest --user=root --password=zhang@123 --review h=localhost,t=query_review /data/dbdata/localhost-slow.log
MYSQL入门5. pt-trend MYSQL入门
pt-trend /data/dbdata/localhost-slow.log
欢迎参与《Mysql入门percona-toolkit对MySQL的复制和监控类操作教程》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |