mysql中如何使用pt-table-checksum和pt-table-sync

這篇文章給大家分享的是有關(guān)MySQL中如何使用pt-table-checksum和pt-table-sync的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)從事做網(wǎng)站、成都網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司。作為專(zhuān)業(yè)網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專(zhuān)業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!

pt-table-checksum和pt-table-sync是percona-toolkit工具中的功能,用來(lái)檢測(cè)主從數(shù)據(jù)一致性和修復(fù)主從不一致。

下面通過(guò)一組實(shí)驗(yàn)學(xué)習(xí)這兩個(gè)功能的使用

1、主庫(kù)創(chuàng)建表并插入數(shù)據(jù)

CREATE TABLE `NewTable` (

`id`  int(8) NULL ,

`name`  varchar(32) NULL ,

PRIMARY KEY (`id`)

) ;

insert into newtable values(1,'leo');

insert into newtable values(2,'mike');

insert into newtable values(3,'jack');

2、從庫(kù)執(zhí)行下面語(yǔ)句,讓主從不一致

insert into newtable values(4,'lucy');

insert into newtable values(5,'petter');

update newtable set name='john' where id =1

3、測(cè)試數(shù)據(jù)如下

主庫(kù):

mysql> select * from test.newtable;

+----+------+

| id | name |

+----+------+

|  1 | leo  |

|  2 | mike |

|  3 | jack |

+----+------+

3 rows in set (0.00 sec)

從庫(kù):

mysql> select * from test.newtable;

+----+--------+

| id | name   |

+----+--------+

|  1 | john   |

|  2 | mike   |

|  3 | jack   |

|  4 | lucy   |

|  5 | petter |

+----+--------+

5 rows in set (0.00 sec)

4、pt-table-checksum參數(shù)介紹、使用

--port=              主庫(kù)端口

--host=              主庫(kù)IP

--databases=      校驗(yàn)的數(shù)據(jù)庫(kù)

--tables=            校驗(yàn) 的表名,只指定數(shù)據(jù)庫(kù)不指定表名,校驗(yàn)數(shù)據(jù)庫(kù)下所有表

--user=               用戶(hù)名(該用戶(hù)在從庫(kù)上也要有,同時(shí)需要權(quán)限)

--password=       用戶(hù)密碼

--replicate           指定checksum存儲(chǔ)的庫(kù)和表

--no-check-binlog-format      忽略binlog的格式,如果binlog是ROW或者M(jìn)IXED不加這個(gè)參數(shù)都會(huì)報(bào)錯(cuò)

--no-check-replication-filters  忽略復(fù)制過(guò)濾,如binlog_ignore_db、slave-skip-errors等選項(xiàng)

--help                  更多更詳細(xì)的參數(shù)請(qǐng)見(jiàn)--help幫助文檔

校驗(yàn):

[root@trcloud ~]# pt-table-checksum --port=3306 --host=192.168.129.15 --databases=test --tables=newtable --user=root --password='123456' --replicate=test.check --no-check-binlog-format --no-check-replication-filters

            TS          ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME    TABLE

12-13T13:44:07      0           1           3             1           0            0.059  test.newtable

注:檢查的時(shí)候會(huì)向表加S鎖

TS:         完成的檢查時(shí)間

ERRORS:檢查時(shí)候發(fā)生的錯(cuò)誤和告警數(shù)量

DIFFS:       0表示一致,1表示不一致

ROWS:    表行數(shù)

CHUNKS:被劃分到表中的塊數(shù)量

SKIPPED: 由于錯(cuò)誤跳過(guò)的數(shù)目

TIME:       執(zhí)行時(shí)間

TABLE:      表名

5、使用pt-table-sync修復(fù)不一致

--replicate=   指定pt-table-checksum得到的表

h=                 主庫(kù)IP

u=                  用戶(hù)名

p=                 密碼

--execute       執(zhí)行修復(fù)

--print            打印出sql語(yǔ)句

--help            更多更詳細(xì)的參數(shù)請(qǐng)見(jiàn)--help幫助文檔

[root@trcloud ~]# pt-table-sync --replicate=test.check h=192.168.129.15,u=root,p='123456' --execute --print

DELETE FROM `test`.`newtable` WHERE `id`='4' LIMIT 1 /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=...,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=...,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;

DELETE FROM `test`.`newtable` WHERE `id`='5' LIMIT 1 /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=...,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=...,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;

REPLACE INTO `test`.`newtable`(`id`, `name`) VALUES ('1', 'leo') /*percona-toolkit src_db:test src_tbl:newtable src_dsn:h=192.168.129.15,p=...,u=root dst_db:test dst_tbl:newtable dst_dsn:h=172.30.249.5,p=...,u=root lock:1 transaction:1 changing_src:test.check replicate:test.check bidirectional:0 pid:19211 user:root host:trcloud*/;

從打印的sql來(lái)看,如果從庫(kù)數(shù)據(jù)多了使用delete刪除,其他情況修復(fù)主從不一致使用的是REPLACE INTO。所以表上一定要有主鍵,不然不僅會(huì)報(bào)錯(cuò),也會(huì)導(dǎo)致主從同步失?。ㄒ?yàn)樵趶膸?kù)執(zhí)行REPLACE INTO執(zhí)行不過(guò)去)

6、檢查主從一致

[root@trcloud ~]# pt-table-checksum --port=3306 --host=192.168.129.15 --databases=test --tables=newtable --user=root --password='123456' --replicate=test.check --no-check-binlog-format --no-check-replication-filters

            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE

12-13T13:48:18      0      0        3       1       0   0.108 test.newtable
數(shù)據(jù)已經(jīng)正常

感謝各位的閱讀!關(guān)于“mysql中如何使用pt-table-checksum和pt-table-sync”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁(yè)名稱(chēng):mysql中如何使用pt-table-checksum和pt-table-sync
URL鏈接:http://muchs.cn/article20/ishcjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄全網(wǎng)營(yíng)銷(xiāo)推廣、定制開(kāi)發(fā)域名注冊(cè)、用戶(hù)體驗(yàn)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)