驗證MySQL主從一致性(pt-table-checksum&pt-table-sync)

來源:互聯網
上載者:User

驗證MySQL主從一致性(pt-table-checksum&pt-table-sync)

percona-toolkit-2.2.8-1.noarch.rpm有兩個工具可以驗證MySQL主從資料的一致性
 
安裝tookkit需要一些依賴包
 
yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y

實驗環境

在Master上初始化實驗資料
 
create database mvbox;
 
use mvbox;

create table test(id int primary key,name varchar(20));

insert into test values(1,'a'),(2,'b'),(3,'c'),(4,'d');

因為主從環境已經搭建,這些資料會自動同步到Slave上。
 
在Slave從庫添加一個資料,類比主從資料不一致的情境。
 
insert into test values(5,'e');
 在Master主庫執行pt-table-checksum命令。
 它會使用concat_ws函數將資料合併為一行,然後使用crc32函數產生校正碼,最後將其插入percona庫的checksums表中。
 
因為主從環境,這個資料會複製到Slave
 也就是說Slave的percona.checksums表,存放的是主庫資料的校正碼。
 所以在Slave對資料執行同樣的校正,然後比對checksums表中的資料,就可以驗證主從是否一致。
 
所以執行pt-table-checksum命令的帳號,至少需要有全庫的唯讀許可權和percona庫的讀寫權限。
 
create user xx;
 
GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'xx'@'%' IDENTIFIED BY 'xx';

grant all privileges on percona.* TO 'xx'@'%' IDENTIFIED BY 'xx';
 
查看主從一致的情況

TS :完成檢查的時間。
ERRORS :檢查時候發生錯誤和警告的數量。
DIFFS :0表示一致,1表示不一致。當指定--no-replicate-check時,會一直為0,當指定--replicate-check-only會顯示不同的資訊。
ROWS :表的行數。
CHUNKS :被劃分到表中的塊的數目。
SKIPPED :由於錯誤或警告或過大,則跳過塊的數目。
TIME :執行的時間。
TABLE :被檢查的表名。
 常用參數
 
--nocheck-replication-filters :不檢查複製過濾器,建議啟用。後面可以用--databases來指定需要檢查的資料庫。
--no-check-binlog-format : 不檢查複製的binlog模式,要是binlog模式是ROW,則會報錯。
--replicate-check-only :只顯示不同步的資訊。
--replicate= :把checksum的資訊寫入到指定表中,建議直接寫到被檢查的資料庫當中。
--databases= :指定需要被檢查的資料庫,多個則用逗號隔開。
--tables= :指定需要被檢查的表,多個用逗號隔開
h=127.0.0.1 :Master的地址
u=root :使用者名稱
p=123456:密碼
P=3306 :連接埠
 可以看到這個工具已經檢測到了主從不一致的情況。
 
如果發生不一致,可以使用pt-table-sync命令修複。
 需要注意的是這個命令需要在Slave從庫執行。
 使用print參數,他會在螢幕顯示修複的SQL語句。然後可以手工確認並執行。

也可以通過這個命令自動執行,不過這樣會修改從庫的資料,感覺不是太安全。
 

需要特別注意的是這兩個命令執行的過程中,會對錶上共用鎖定,所以生產環境要謹慎選擇執行時間。

Ubuntu下Nginx做負載實現高效能WEB伺服器5---MySQL主主同步

生產環境MySQL主主同步主鍵衝突處理

MySQL主從失敗 錯誤Got fatal error 1236

MySQL主從複製,單台伺服器上實施

本文永久更新連結地址:

相關文章

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.