Benutzer-Werkzeuge

Webseiten-Werkzeuge


mysql-tabellen_in_einem_pxc-cluster_pruefen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

mysql-tabellen_in_einem_pxc-cluster_pruefen [2020-08-09 22:46:58] – angelegt manfredmysql-tabellen_in_einem_pxc-cluster_pruefen [2020-08-09 22:50:34] (aktuell) manfred
Zeile 1: Zeile 1:
 +====== MySQL-Tabellen in einem PXC-Cluster prüfen ======
 +
 +Installation des Percona-Toolkits:
 +  > apt install percona-toolkit
 +
 +Dieser DB haben wir in diesem Beispiel installiert:
 +  > dpkg -l | fgrep -- -server | egrep 'mysql|maria|xtra'
 +  ii  mysql-community-server                5.7.30-1ubuntu16.04                             amd64        MySQL Server
 +
 +----
 +
 +Dieser Aufruf prüft die lokale Datenbank:
 +  root@dbmaster:~# pt-table-checksum
 +
 +Wenn man mehr als eine DB auf einem Host laufen lässt, dann mußt Du noch den Port mit angeben:
 +  root@dbmaster:~# pt-table-checksum -P 3369
 +  Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
 +
 +Leider kann er aber nicht automatisch die Slave-Hosts finden.
 +Wenn wir in der Doku nachschauen, was die Option ''-____-recursion-method'' für Werte annehmen kann, dann steht da u.a. ''hosts'' aber das ist auch schon die Standard-Einstellung. Also brauchen wir diese Option nicht extra zu setzen.
 +
 +Weil es in der Doku keine Option für die Liste der Slave-Hosts gibt, werden wir hier noch zusätzlich den Master-Host angeben:
 +  root@dbmaster:~# pt-table-checksum -h 127.0.0.1 -P 3369
 +  Cannot connect to P=3369,h=db3369knoten02
 +  Cannot connect to P=3369,h=db3369knoten03
 +  Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
 +
 +Jetzt wird auch klar, warum er die Slave-Hosts nicht finden konnte.
 +Er nimmt aus der Ansicht von ''SHOW SLAVE STATUS'' nicht (wie erwartet) den Eintrag für ''Master_Host:'' sondern den für ''Channel_Name:'', was für mich keinen Sinn ergibt!
 +
 +Also müssen wir für die Kanalnamen in der ''/etc/hosts'' jeweils noch IPs hinterlegen:
 +  root@dbmaster:~# echo "10.10.1.12 db3369knoten02" >> /etc/hosts
 +  root@dbmaster:~# echo "10.10.1.13 db3369knoten03" >> /etc/hosts
 +
 +  root@dbmaster:~# pt-table-checksum -h 127.0.0.1 -P 3369
 +  Cannot connect to P=3369,h=db3369knoten01
 +  Cannot connect to P=3369,h=db3369knoten01
 +
 +Klar, er versucht natürlich auch die Einträge für die ''Channel_Name:'' von den Slave-Hosts zu kontaktieren, also sich selbst:
 +  root@dbmaster:~# echo "10.10.1.11 db3369knoten01" >> /etc/hosts
 +
 +  root@dbmaster:~# pt-table-checksum -h 127.0.0.1 -P 3369
 +  Replica tcdb09 has binlog_format ROW which could cause pt-table-checksum to break replication.  Please read "Replicas using row-based replication" in the LIMITATIONS section of the tool's documentation.  If you understand the risks, specify --no-check-binlog-format to disable this check.
 +  Replica tcdb08 has binlog_format ROW which could cause pt-table-checksum to break replication.  Please read "Replicas using row-based replication" in the LIMITATIONS section of the tool's documentation.  If you understand the risks, specify --no-check-binlog-format to disable this check.
 +
 +Nun scheint es ein Problem zu sein, dass wir ''binlog_format=ROW'' verwenden.
 +Allerdings werden wir das nicht ändern.
 +
 +Also müssen wir dafür sorgen, dass das übergangen wird:
 +  root@dbmaster:~# pt-table-checksum -h 127.0.0.1 -P 3369 --no-check-binlog-format
 +  08-07T12:10:27 Replication filters are set on these hosts:
 +    tcdb09
 +      slave_skip_errors = 1032,1062,1507,1517
 +      replicate_wild_ignore_table = specialCharFilter.%
 +    tcdb08
 +      replicate_wild_ignore_table = specialCharFilter.%
 +      slave_skip_errors = 1032,1062,1507,1517
 +  Please read the --check-replication-filters documentation to learn how to solve this problem. at /usr/bin/pt-table-checksum line 9644.
 +
 +In der Doku steht, dass die Prüfung sofort abgebrochen wird, wenn Replikations-Filter gefunden werden.
 +
 +Also sagen wir ihm, dass er trotzdem weiter machen soll:
 +  root@dbmaster:~# pt-table-checksum -h 127.0.0.1 -P 3369 --no-check-binlog-format --no-check-replication-filters
 +              TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
 +  08-07T12:13:45      0      0        0               0.283 mysql.columns_priv
 +  08-07T12:13:45      0      0        5               0.286 mysql.db
 +  08-07T12:13:45      0      0        2               0.283 mysql.engine_cost
 +  08-07T12:13:45      0      0        0               0.034 mysql.event
 +  08-07T12:13:45      0      0        0               0.041 mysql.func
 +  08-07T12:13:45      0      1       19               0.035 mysql.gtid_executed
 +  08-07T12:13:45      0      0       40               0.031 mysql.help_category
 +  08-07T12:13:46      0      0      676               0.281 mysql.help_keyword
 +  08-07T12:13:46      0      0     1330               0.287 mysql.help_relation
 +  08-07T12:13:46      0      0      634               0.290 mysql.help_topic
 +  08-07T12:13:47      0      0        0               0.285 mysql.ndb_binlog_index
 +  08-07T12:13:47      0      0        1               0.283 mysql.plugin
 +  08-07T12:13:47      0      0       48               0.286 mysql.proc
 +  08-07T12:13:47      0      0        0               0.286 mysql.procs_priv
 +  08-07T12:13:48      0      0        1               0.285 mysql.proxies_priv
 +  08-07T12:13:48      0      0        6               0.283 mysql.server_cost
 +  08-07T12:13:48      0      0        0               0.291 mysql.servers
 +  08-07T12:13:49      0      0        2               0.284 mysql.tables_priv
 +  08-07T12:13:49      0      0        0               0.031 mysql.time_zone
 +  08-07T12:13:49      0      0        0               0.283 mysql.time_zone_leap_second
 +  08-07T12:13:49      0      0        0               0.031 mysql.time_zone_name
 +  08-07T12:13:49      0      0        0               0.029 mysql.time_zone_transition
 +  08-07T12:13:49      0      0        0               0.281 mysql.time_zone_transition_type
 +  08-07T12:13:50      0      0       10               0.290 mysql.user
 +  08-07T12:13:50      0      0        6               0.287 sys.sys_config
 +
 +**__ACHTUNG!!!__ Zu beachten ist auch, dass in der [[https://www.percona.com/doc/percona-toolkit/LATEST/pt-table-checksum.html|pt-table-checksum - Dokumentation]] steht, dass in der Standard-einstellung nur max die ersten 1000 Zeilen für max. 0,5 Sekunden je Chunk überprüft werden. __Es wird also nicht der komplette DB-Inhalt zwischen den Replikationspartnern verglichen!__**
 +Dieses Verhalten kann aber mit Hilfe von Parametern verändert werden.
 +Allerdings gibt es keine Option für soetwas wie "__Alles__".
 +