Heim  >  Artikel  >  Datenbank  >  pt-table-checksum Überprüfung und pt-table-sync Reparaturdaten

pt-table-checksum Überprüfung und pt-table-sync Reparaturdaten

巴扎黑
巴扎黑Original
2017-06-23 15:06:091462Durchsuche
1: Toolkit herunterladen
Melden Sie sich auf der Website an, um das entsprechende Toolkit herunterzuladen
2: Installation
(1) leckere Installation:
sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum list | grep percona-toolkit

Der Ergebnissatz zeigt Folgendes an, um zu beweisen, dass die Installation erfolgreich war:

percona-toolkit.noarch 3.0.0-rc percona-release-noarch

Dann installieren Sie

sudo yum install percona-toolkit

(2) Entpacken Sie das Installationspaket:

[root@localhost home]# cd toolkit/[root@localhost toolkit]# ls
percona-toolkit-2.2.19.tar.gz[root@localhost toolkit]# tar -xvf percona-toolkit.tar.gz

Bisher wurde das ToolKit von Percona installiert. Als nächstes werden wir hauptsächlich die pt-table-checksum Verifizierung und pt-table-sync testen Ersteres wird hauptsächlich zur Datenüberprüfung und -überprüfung verwendet. Aus Sicht der Konsistenz wird letzteres hauptsächlich zur Reparatur von Daten verwendet. Im Allgemeinen können beide kombiniert werden, um Dateninkonsistenzen zu reparieren.

pt-table-checksum ist ein von Percona bereitgestelltes Tool zur Überprüfung der Konsistenz von Master-Slave-Daten. Wir verweisen auf die Master-Bibliothek, beurteilen die Ergebnismenge der Slave-Bibliothek und geben sie an uns zurück . Wenn Inkonsistenzen erfasst werden, wird auf Anfrage ein Ergebnis ungleich Null zurückgegeben. Es können jedoch nur Dateninkonsistenzen gefunden werden. Wenn Sie Datenprobleme beheben möchten, müssen Sie pt-table-sync verwenden.
pt-table-checksum basiert beim Ausführen auf dem Anweisungskopierformat. Wenn wir das ROW-Format verwenden, müssen wir beim Ausführen den Parameter --no-check-binlog-format hinzufügen.
3: Die Praxis von pt-table-checksum, wir können es direkt nach der Installation verwenden. Ich verwende die zweite Methode
[root@localhost bin]# /home/toolkit/percona-toolkit-2.2.19/bin/pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format h=172.16.16.35,u=root,p=123456,P=3306TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE06-07T10:55:49 0 0 1 1 0 1.331 MAXIANGQIAN.MAXIANGQIAN06-07T10:55:54 0 0 1 1 0 5.524 maxiangqian.test06-07T10:55:56 0 0 4 1 0 1.208 maxiangqian.test0106-07T10:55:57 0 0 0 1 0 1.164 mysql.columns_priv06-07T10:55:58 0 0 5 1 0 1.216 mysql.db06-07T10:55:59 0 0 2 1 0 1.176 mysql.engine_cost06-07T10:56:00 0 0 0 1 0 1.178 mysql.event06-07T10:56:01 0 0 0 1 0 1.160 mysql.func06-07T10:56:03 0 0 1 1 0 1.154 mysql.gtid_executed06-07T10:56:08 0 0 40 4 0 5.015 mysql.help_category06-07T10:56:13 0 0 679 5 0 5.806 mysql.help_keyword06-07T10:56:18 0 0 1334 4 0 4.572 mysql.help_relation06-07T10:56:19 0 0 635 1 0 1.169 mysql.help_topic06-07T10:56:20 0 0 0 1 0 1.163 mysql.ndb_binlog_index06-07T10:56:22 0 0 0 1 0 1.157 mysql.plugin06-07T10:56:23 0 1 48 1 0 1.236 mysql.proc06-07T10:56:24 0 0 0 1 0 1.197 mysql.procs_priv06-07T10:56:25 0 0 1 1 0 1.235 mysql.proxies_priv06-07T10:56:26 0 0 6 1 0 1.188 mysql.server_cost06-07T10:56:28 0 0 0 1 0 1.154 mysql.servers06-07T10:56:34 0 0 1 1 0 6.184 mysql.tables_priv06-07T10:56:35 0 0 0 1 0 1.198 mysql.time_zone06-07T10:56:36 0 0 0 1 0 1.121 mysql.time_zone_leap_second06-07T10:56:37 0 0 0 1 0 1.148 mysql.time_zone_name06-07T10:56:38 0 0 0 1 0 1.147 mysql.time_zone_transition06-07T10:56:40 0 0 0 1 0 1.138 mysql.time_zone_transition_type06-07T10:56:41 0 0 8 1 0 1.336 mysql.user06-07T10:56:42 0 0 0 1 0 1.164 open_api.ma06-07T10:57:01 0 0 1000000 13 0 18.707 sbtest.sbtest06-07T10:57:02 0 0 6 1 0 1.263 sys.sys_config

Wir können eine bestimmte Bibliothek auch separat überprüfen, um den Umfang der Prüfung einzugrenzen:

[root@localhost bin]# /home/toolkit/percona-toolkit-2.2.19/bin/pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format --databases=maxiangqian h=172.16.16.35,u=root,p=123456,P=3306

Die erhaltenen Ergebnisse sind wie oben, siehe in der Beschreibung:

TS: Zeit, die Prüfung abzuschließen. FEHLER: Die Anzahl der Fehler und Warnungen, die während der Prüfung aufgetreten sind. DIFFS: 0 bedeutet konsistent, 1 bedeutet inkonsistent. Wenn --no-replicate-check angegeben ist, ist es immer 0. Wenn --replicate-check-only angegeben ist, werden andere Informationen angezeigt. ROWS: Die Anzahl der Zeilen in der Tabelle. CHUNKS: Die Anzahl der in der Tabelle aufgeteilten Blöcke. SKIPPED: Die Anzahl der Blöcke, die aufgrund von Fehlern oder Warnungen oder weil sie zu groß sind, übersprungen werden sollen. ZEIT: Ausführungszeit. TABELLE: Der Name der Tabelle, die überprüft wird.
Dann werfen Sie einen Blick auf diesen Hauptparameter:
--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 :端口

Durch Angabe des Parameters --replicate=rep_test.checksums wird automatisch eine Datenbank erstellt Die generierten Prüfinformationen werden in die Prüfsummentabelle geschrieben.

Geben Sie die entsprechende Bibliothek von SLAVE ein, um die Informationen der Prüfsummentabelle anzuzeigen. Sie können inkonsistente Informationen über die folgende Anweisung anzeigen:
mysql> select * from checksums where this_cnt<>master_cnt;

Durch das obige This_crc <> können wir ihre Inkonsistenzen klarer erkennen. Durch Chunk können wir erkennen, welcher Block dieser Tabelle inkonsistente Datensätze enthält.

4: Erkennen Sie Dateninkonsistenzen und beheben Sie sie mit pt-table-sync.
Werfen wir einen Blick auf den vorherigen Abschnitt. Wir haben festgestellt, dass es welche gibt Inkonsistenzen durch die folgende Anweisung Die Daten sind inkonsistent:
[root@localhost bin]# /home/toolkit/percona-toolkit-2.2.19/bin/pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format --databases=maxiangqian h=172.16.16.35,u=root,p=123456,P=3306TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE06-07T11:13:18 0 0 1 1 0 1.220 MAXIANGQIAN.MAXIANGQIAN06-07T11:13:19 0 1 1 1 0 1.135 maxiangqian.test06-07T11:13:21 0 0 4 1 0 1.197 maxiangqian.test01

Inkonsistente Daten wiederherstellen:

[root@localhost bin]# clear[root@localhost bin]# ./pt-table-sync --execute h=172.16.16.35,P=3306,D=maxiangqian,t=test,u=root,p=123456 h=172.16.16.34,P=3306,u=root,p=123456 --no-check-slave --print[root@localhost bin]# /home/toolkit/percona-toolkit-2.2.19/bin/pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format --databases=maxiangqian h=172.16.16.35,u=root,p=123456,P=3306TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE06-07T11:18:09 0 0 1 1 0 1.172 MAXIANGQIAN.MAXIANGQIAN06-07T11:18:10 0 0 1 1 0 1.144 maxiangqian.test06-07T11:18:11 0 0 4 1 0 1.282 maxiangqian.test01

selbst ist weniger Testen für diese Tabelle Nach der Ausführung einer Datenzeile sind die Daten des Hauptteils und der Kopie konsistent:

Als nächstes werfen wir einen Blick auf einige Anwendungsfälle von pt-table-sync:
(1) Synchronisieren Sie die Daten auf Host1 mit Host2 und synchronisieren Sie nur die db.tbl-Tabelle.
pt-table-sync --execute h=host1,D=db,t=tbl h=host2[root@localhost bin]# ./pt-table-sync --execute h=172.16.16.35,P=3306,D=maxiangqian,t=test,u=root,p=123456 h=172.16.16.34,P=3306,u=root,p=123456 --no-check-slave --print

(2) Synchronisieren Sie alle Daten auf Host1 zu Host2 und Host3

pt-table-sync --execute host1 host2 host3[root@localhost bin]# ./pt-table-sync --execute h=172.16.16.35,P=3306,D=maxiangqian,t=test,u=root,p=123456 h=172.16.16.34,P=3306,u=root,p=123456 h=172.16.16.35,P=3307,u=root,p=123456 --no-check-slave --print

(3) Stellen Sie sicher, dass alle Daten auf Slave1 mit der Hauptdatenbank synchronisiert sind

pt-table-sync --execute --sync-to-master slave1[root@localhost bin]# ./pt-table-sync --execute --sync-to-master h=172.16.16.34,P=3306,u=root,p=123456 --no-check-slave --print

Dies erfordert, dass die zu prüfende Tabelle einen Primärschlüssel oder einen eindeutigen Index haben muss. Wir können die einzelne Tabelle einer einzelnen Datenbank auch wie folgt angeben:

[root@localhost bin]# ./pt-table-sync --execute --sync-to-master h=172.16.16.34,P=3306,D=maxiangqian,t=test01,u=root,p=123456 --no-check-slave --print

(4) Stellen Sie alle Slave-Datenbanken gemäß den von rep_test.checksums generierten wieder her check

pt-table-sync --execute --replicate test.checksum master1

ist das folgende Beispiel:

[root@localhost bin]# ./pt-table-sync --execute --replicate rep_test.checksums h=172.16.16.35,P=3306,u=root,p=123456

(5 ) Nur Daten von Slave1 reparieren

/pt-table-sync --execute --replicate rep_test.checksums --sync-to-master slave1

(6) Dual-Master-Modus Master2 repariert seine eigenen Daten:

pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl

Aufgrund der vielen Probleme im Dual-Master-Modus kann eine Änderung an eine andere Datenbank übertragen werden, daher dürfen wir die folgenden Vorgänge im Dual-Master-Modus nicht ausführen:

pt-table-sync --execute h=master1,D=db,t=tbl master2

Das obige ist der detaillierte Inhalt vonpt-table-checksum Überprüfung und pt-table-sync Reparaturdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn