MySQL主從不一致檢查與修複

來源:互聯網
上載者:User

pt-table-checksum 安裝:

:wget www.percona.com/downloads/percona-toolkit/2.2.2/percona-toolkit-2.2.2.tar.gz

tar  xf  percona-toolkit-{version}.tar.gz

cd percona-toolkit-{version}  # 進入解壓後的目錄

vim  README                    # 查看安裝手冊

必備條件:

安裝 yum install  perl  mysql  perl-DBD-MySQL  -y

pt-table-checksum安裝步驟:

perl

Makefile.PL

make

make install

一、在master上操作:

1.在Master庫上授權:

GRANT update,insert,delete,SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO  checksum@'Master ip'  IDENTIFIED BY '123' ;

 


2、手工建在制定的庫下(例如pts) checksums 表,儲存pt-table-checksum 檢測資料:

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;

a.執行pt-table-checksum 檢查主從資料表:

 /usr/bin/pt-table-checksum  h='1.1.1.2',u='checksum',p='123',P=3306 --databases test --tables t  --nocheck-replication-filters --create-replicate-table --replicate=pts.checksums  --no-check-binlog-format  --lock-wait-timeout=120

TS                ERRORS  DIFFS    ROWS  CHUNKS SKIPPED    TIME  TABLE

 06-08T10:41:16      0      0        2      1      0      0.338  test.t

上面顯示的參數說明:

 TS            :完成檢查的時間。

ERRORS        :檢查時候發生錯誤和警告的數量。

DIFFS        :0表示一致,1表示不一致。當指定--no-replicate-check時,會一直為0,當指定--replicate-check-only會顯示不同的資訊。

ROWS          :表的行數。

CHUNKS        :被劃分到表中的塊的數目。

SKIPPED      :由於錯誤或警告或過大,則跳過塊的數目。

TIME          :執行的時間。

TABLE        :被檢查的表名。

 


b.執行pt-table-sync 列印主從資料不一致的表:

/usr/bin/pt-table-sync --replicate=pts.checksums h=1.1.1.2,u=checksum,p=123 h=1.1.1.4,u=checksum,p=123 --print

 


c.恢複主從不一致的資料(在Master執行且以Master的結果為準)

/usr/bin/pt-table-sync --replicate=pts.checksums h=1.1.1.2,u=checksum,p=123 h=1.1.1.4,u=checksum,p=123 --execute

 

pt-table-checksum是一個線上驗證主從資料一致性的工具,主要用於以下情境:

1. 資料移轉前後,進行資料一致性檢查

2. 當主從複製出現問題,待修複完成後,對主從資料進行一致性檢查

3. 把從庫當成主庫,進行資料更新,產生了”髒資料”

4. 定期校正

工作原理:

pt-table-checksum在主上執行檢查語句線上檢查mysql複製的一致性,把表分塊(hunk-size),產生replace語句,然後通過複製傳遞到從,再通過update更新master_src的值。通過檢測從上this_src和master_src的值從而判斷複製是否一致。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.