MariaDB Cluster geordnet stoppen- und starten

Manchmal kann es notwendig sein einen ganzen Galera Cluster herunterzufahren (etwa um offline Snapshots zu machen) und dann wieder hochzufahren.

Wenn dies geordnet passiert, gibt es danach auch keine „Split-Brain“ Situationen.

Inhalt

Shutdown Galera Cluster

Zunächst sollte überprüft werden, dass der Cluster vollständig synchron ist (auf jedem Knoten):

mysql -e 'SHOW STATUS LIKE "wsrep_cluster_size";'         # Sollte die Anzahl der CLuster Nodes anzeigen
mysql -e 'SHOW STATUS LIKE "wsrep_local_state_comment";'  # Sollte 'Synced' anzeigen

Oder mit Ansible:

ansible galera_db -a "mysql -e 'SHOW STATUS LIKE \"wsrep_cluster_size\";'"         |grep wsrep_cluster_size
ansible galera_db -a "mysql -e 'SHOW STATUS LIKE \"wsrep_local_state_comment\";'"  |grep wsrep_local_state_comment

Danach wird ein Node nach dem anderen heruntergefahren und zwar in absteigender Reihenfolge (also z.B.: node3, node2, node1):

ansible galera-node3 -m community.general.shutdown
ansible galera-node2 -m community.general.shutdown
ansible galera-node1 -m community.general.shutdown

Hinweis: Am besten man wartet jeweils bei jedem Host, bis dieser vollständig heruntergefahren ist.

Start Galera Cluster

Wichtig

Nur ein Node darf initial gestartet werden – der sog. „bootstrap Node“. Alle anderen verbinden sich danach automatisch zu ihm.

Nun wird der erste node wieder gestartet (die anderen bleiben noch aus!).

Danach auf dem Node in der Datei: /var/lib/mysql/grastate.dat nachsehen ob safe_to_bootstrap: 1 drin steht um zu verifizieren, dass der Node zuletzt sauber gestoppt wurde:

grep 'safe_to_bootstrap' /var/lib/mysql/grastate.dat

Dieser Node darf nun als erster gebootstrapped werden, in dem der Befehl galera_new_cluster ausgeführt wird:

galera_new_cluster

Danach können alle anderen Nodes nacheinander normal gestartet werden.

Bevor man jeweils den nächsten Node startet sollte überprüft werden, dass der Cluster vollständig synchron ist:

mysql -e 'SHOW STATUS LIKE "wsrep_cluster_%";' | egrep 'wsrep_cluster_size|wsrep_cluster_status'
  • wsrep_cluster_size sollte die bisherige Anzahl der gestarteten Nodes zeigen.
  • wsrep_cluster_status sollte auf allen Nodes Primary sein.

Oder mit Ansible:

ansible galera_db -a "mysql -e 'SHOW STATUS LIKE \"wsrep_cluster_%\";'" | egrep 'wsrep_cluster_size|wsrep_cluster_status'

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert