DBAtlas · Atlas für Datenbankbetrieb

MySQL InnoDB Cluster (Group Replication + MySQL Router)

MySQLStufe: FortgeschrittenDauer: 90–120 Min.

Baut aus 3 (oder 5–9) installierten MySQL-Servern im selben Rechenzentrum einen Single-Primary-InnoDB-Cluster auf: dba.configureInstance, createCluster und addInstance mit Clone über die MySQL Shell AdminAPI; MySQL-Router-Bootstrap (6446 RW / 6447 RO), Überwachung mit cluster.status(), Failover-Test sowie Runbooks für Quorumverlust, Totalausfall und Rolling Restart. Am Ende hast du einen Cluster, der bei Ausfall des Primary automatisch ein Failover durchführt und mit dem sich die Anwendung über Router verbindet. Für einen entfernten Standort oder einfache Leseskalierung nutzt du die klassische Replikation, für den täglichen Betrieb eines bestehenden Clusters den Betriebsleitfaden für InnoDB Cluster.

Topologie: 3–9 MySQL-Nodes + 1 Router-Server

Vor dem Start

  • Auf allen Nodes ist MySQL … in derselben Unterversion installiert (DBAtlas-Leitfaden MySQL-Installation auf einem Einzelserver), GTID ist aktiv, jeder Node hat eine eigene server_id. Der Betriebssystem-root kann sich mit mysql ohne Passwort verbinden.
  • Auf den Nodes 2..… liegen keine Daten, die erhalten bleiben müssen: Beim Hinzufügen zum Cluster erhalten sie per Clone eine Kopie von Node 1 (…), ihre vorhandenen Daten werden gelöscht.
  • Alle Tabellen auf Node 1 sind InnoDB-Tabellen mit Primärschlüssel (Voraussetzung für Group Replication). Die Prüfabfrage muss leer zurückkommen.
  • Die Nodes erreichen sich gegenseitig über die Ports 3306 (MySQL- und Group-Replication-Kommunikation), 33060 (X Protocol) und 33061; der Router-Server erreicht die Nodes über 3306/33060. Die Latenz ist gering (selbes Rechenzentrum; < 1–2 ms).
  • Die Uhren sind synchronisiert (chrony).
  • Die Anzahl der Nodes ist ungerade (…): … Nodes tolerieren den Ausfall von höchstens … Node(s). Eine gerade Anzahl bringt keine zusätzliche Toleranz.
  • Für das Cluster-Administratorkonto (…) liegt ein starkes Passwort bereit (mindestens 8 Zeichen, Groß-/Kleinbuchstaben, Ziffern, Sonderzeichen). MySQL Shell und Router fragen das Passwort in den Schritten ab, ohne es anzuzeigen; Shell wird angewiesen, es nicht zu speichern.
  • Der Router-Server erreicht repo.mysql.com (das MySQL-Repository wird in diesem Leitfaden hinzugefügt).

Phasen der Anleitung

  • Vorbereitung (alle MySQL-Nodes) — Cluster-Ports in der Firewall öffnen · Group-Replication-Port in SELinux registrieren · Cluster-Einstellungen hinzufügen (…) · MySQL neu starten · MySQL Shell installieren
  • Instanzkonfiguration (dba.configureInstance) — Cluster-Administratorkonto anlegen (…) · Instanzen aus der Ferne prüfen
  • Cluster erstellen — Cluster erstellen · Node zum Cluster hinzufügen (…) · Clusterstatus prüfen
  • MySQL Router — MySQL-Repository hinzufügen (Router-Server) · Router und Shell installieren · Router bootstrappen · Router-Dienst starten · Router-Ports in der Firewall öffnen · Verbindung über Router testen
  • Prüfung und Überwachung — Detaillierter Status · Mitglieder mit SQL überwachen
  • Failover-Test — Failover: Primary stoppen · Failover: Primary stoppen · Failover: neuen Primary anzeigen · Failover: neuen Primary anzeigen · Failover: leitet Router auf den neuen Primary um · Failover: leitet Router auf den neuen Primary um …
  • Quorumverlust und Totalausfall — Quorum: Zustand diagnostizieren · Quorum: Zustand diagnostizieren · Quorum: mit der verbliebenen Partition erzwingen · Quorum: mit der verbliebenen Partition erzwingen · Quorum: alte Gruppe auf dem zurückkehrenden Node stoppen (…) · Quorum: alte Gruppe auf dem zurückkehrenden Node stoppen (…) …
  • Rolling Restart (Wartung) — Rolling: Secondary neu starten (…) · Rolling: Secondary neu starten (…) · Rolling: Primary-Rolle übergeben · Rolling: Primary-Rolle übergeben · Rolling: alten Primary neu starten · Rolling: alten Primary neu starten …
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →