In produktiven Docker Compose-Umgebungen ist die Hochverfügbarkeit von Datenbanken essenziell, um Datenverlust und Ausfallzeiten zu vermeiden. Dieses Tutorial behandelt, wie man Datenbank-Cluster in Compose aufsetzt, Replikation implementiert, Failover automatisiert und typische Risiken wie Split-Brain minimiert. Der Fokus liegt auf praxisnahen Patterns für MySQL/MariaDB, PostgreSQL und ähnliche relationale Systeme.
1. Grundlagen der Database HA
Datenbank-Hochverfügbarkeit umfasst mehrere Aspekte:
- Replikation: Synchronisation von Daten zwischen Master und Replicas.
- Failover: Automatische Umschaltung auf einen Replica bei Master-Ausfall.
- Split-Brain: Szenario, bei dem zwei Nodes gleichzeitig als Master agieren, was zu Dateninkonsistenzen führt.
- Consistency vs. Availability: Abwägen zwischen strenger Konsistenz und systemweiter Verfügbarkeit.
2. Architektur in Compose
In Compose werden mehrere Datenbank-Container definiert, die über ein internes Netzwerk miteinander kommunizieren. Typische Rollen:
- Primary/Master für Schreibzugriffe
- Replica/Secondary für Lesezugriffe
- Optional: Arbiter oder Witness für Quorum-basierte Entscheidungen
Beispiel Compose-Setup für MySQL HA
version: "3.8"
services:
mysql-master:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
volumes:
- db-master-data:/var/lib/mysql
networks:
- dbnet
mysql-replica:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
MYSQL_REPLICATION_MODE: replica
MYSQL_REPLICATION_USER: repl
MYSQL_REPLICATION_PASSWORD: replpass
MYSQL_MASTER_HOST: mysql-master
depends_on:
- mysql-master
volumes:
- db-replica-data:/var/lib/mysql
networks:
- dbnet
volumes:
db-master-data:
db-replica-data:
networks:
dbnet:
driver: bridge
3. Replikation einrichten
Für relationale Datenbanken kann die Replikation auf Binlog-Basis (MySQL) oder WAL (PostgreSQL) erfolgen. Wichtig ist, Benutzer für die Replikation anzulegen und die Netzwerkverbindung zu konfigurieren.
MySQL Replikation initialisieren
# Auf dem Master
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'replpass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
Die erhaltenen Werte (File, Position) werden auf den Replica übertragen, um die Replikation zu starten.
PostgreSQL Streaming Replication
# Auf dem Master (postgresql.conf)
wal_level = replica
max_wal_senders = 3
hot_standby = on
Auf dem Replica
pg_basebackup -h master -D /var/lib/postgresql/data -U repl -v -P
4. Failover Mechanismen
Automatisches Failover kann über externe Tools oder Scripts umgesetzt werden, da Compose selbst keine orchestrierte Failover-Logik bietet.
Beispiel: Keepalived + VIP
- Master bindet VIP (z. B. 10.0.0.50)
- Backup überwacht Master über Healthchecks
- Master fällt aus → Backup übernimmt VIP und neue Clients verbinden sich automatisch
Beispiel: Orchestrierte Failover Scripts
# healthcheck.sh
#!/bin/bash
if ! mysqladmin ping -h mysql-master --silent; then
echo "Failover required"
# Promote replica to master
mysql -h mysql-replica -e "STOP SLAVE; RESET SLAVE ALL; SET GLOBAL read_only=0;"
fi
5. Split-Brain Risiken
Split-Brain tritt auf, wenn Netzwerkpartitionen entstehen und mehrere Nodes gleichzeitig als Master agieren. Dies kann zu Datenverlust oder Inkonsistenzen führen.
Strategien zur Vermeidung
- Quorum-basierte Abstimmungen (z. B. mit Galera Cluster)
- VIP oder external fencing, um nur einem Node Schreibrechte zu geben
- Monitoring und Healthchecks, um aktive Master zu identifizieren
- Replication Mode: Semi-Sync Replikation bei MySQL
6. Backup und Restore Tests
HA allein schützt nicht vor Datenverlust. Regelmäßige Backups und Restore-Tests sind essenziell.
# Beispiel mysqldump Backup
docker exec mysql-master sh -c 'exec mysqldump --all-databases -uroot -prootpass' > all_db_backup.sql
# Restore auf Replica/Testhost
docker exec -i mysql-replica sh -c 'mysql -uroot -prootpass' < all_db_backup.sql
7. Monitoring
Wichtige Metriken für HA-Datenbanken:
- Replication Lag
- Connection Errors
- VIP Failover Events
- CPU/Memory Nutzung der DB-Container
Tools: Prometheus + Grafana, ELK Stack, Percona Monitoring Plugins.
8. Best Practices
- Immer mindestens zwei Replikate für kritische Dienste.
- Regelmäßige Failover Tests durchführen.
- Healthchecks für Master und Replica implementieren.
- Backup und Restore Prozesse automatisieren und testen.
- Quorum-Mechanismen bei Clustern wie Galera oder Patroni nutzen.
- Netzwerkpartitionen und Split-Brain Szenarien bewusst simulieren.
9. Zusammenfassung
Hochverfügbare Datenbanken in Docker Compose erfordern eine klare Trennung von Master/Replica-Rollen, sorgfältige Replikationseinstellungen, Failover-Mechanismen und Monitoring. Durch den Einsatz von VIPs, Healthchecks und bewährten Backup-Strategien lassen sich Ausfallzeiten minimieren und Split-Brain-Risiken reduzieren. Dieses Setup eignet sich für produktive Compose-Umgebungen ohne Orchestrator, in denen dennoch Redundanz und Datenintegrität gefordert sind.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











