# MariaDB Galera Cluster Setup (3 Server) Dieses Setup ist für den Betrieb auf drei separaten Servern optimiert. ## Server-Struktur - **Server 1:** 10.233.1.101 (Bootstrap-Knoten) - **Server 2:** 10.233.1.102 (Cluster-Knoten) - **Server 3:** 10.233.1.103 (Cluster-Knoten) ## Vorbereitung 1. Stelle sicher, dass auf allen Servern **Docker** installiert ist. 2. Die Firewall muss folgende Ports zwischen den Servern erlauben: - `3306` (MySQL/MariaDB) - `4567` (Galera Cluster Kommunikation) - `4568` (Incremental State Transfer - IST) - `4444` (State Snapshot Transfer - SST) ## Installations-Ablauf Kopiere das `docker/` Verzeichnis auf alle drei Server. ### 1. Auf Server 1 (10.233.1.101) Initialisiere den Cluster (Bootstrap). Dieser Knoten wird der erste Master. ```bash bash docker/scripts/init_cluster_n1.sh ``` ### 2. Auf Server 2 (10.233.1.102) Tritt dem bestehenden Cluster bei. ```bash bash docker/scripts/init_cluster_n2.sh ``` ### 3. Auf Server 3 (10.233.1.103) Tritt dem bestehenden Cluster bei. ```bash bash docker/scripts/init_cluster_n3.sh ``` ## Status prüfen Nachdem alle Knoten gestartet sind, kannst du den Status mit dem bereitgestellten Skript prüfen: ```bash bash docker/scripts/check_nodes.sh ``` Die Ausgabe sollte **`wsrep_cluster_size | 3`** anzeigen. ## Web-Dashboard (Optional) Du kannst einen kleinen Webserver starten, der den Status des Clusters grafisch im Browser anzeigt: 1. Starte den Webserver: ```bash bash docker/scripts/init_webserver.sh ``` 2. Öffne im Browser: `http://[SERVER-IP]:8080` ## Wichtige Hinweise ### Network Mode Host Die Container nutzen `network_mode: host`. Das sorgt für maximale Performance, da kein Docker-Netzwerk-Overhead entsteht. MariaDB ist direkt über die IP des Host-Servers erreichbar. ### Neustart des Clusters Falls der gesamte Cluster gestoppt wurde, muss der erste Knoten immer wieder mit dem `init_cluster_n1.sh` Skript (Bootstrap) gestartet werden, um den Cluster neu zu initialisieren. #### Fehlerbehebung (Recovery) Falls der Cluster nach einem harten Neustart im "Restart-Loop" hängt, nutze auf **Server 1** das Recovery-Skript: ```bash bash docker/scripts/recover_cluster.sh ``` Dieses Skript forciert den Bootstrap von Node 1. Sobald dieser fertig ist, kannst du Node 2 und 3 normal starten. ### Verzeichnisstruktur Die Skripte erwarten, dass die Verzeichnisstruktur (`docker/scripts/` und `docker/mariadb/n*/`) erhalten bleibt, da sie intern mit relativen Pfaden arbeiten.