MariaDB Replikation: Unterschied zwischen den Versionen
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | |||
= MariaDB absichern und Replikation einrichten = | = MariaDB absichern und Replikation einrichten = | ||
| + | |||
| + | Dieses Skript beschreibt, wie du zwei MariaDB-Server absicherst und eine einfache Master-Slave-Replikation einrichtest. Dabei kannst du auf dem Master-Server Daten schreiben und ändern, die automatisch auf den Slave-Server übertragen werden. Das erhöht Datensicherheit und Verfügbarkeit, da der Slave-Server für Backups oder Lastverteilung (nur lesend) verwendet werden kann. | ||
| + | |||
| + | Der Ablauf umfasst: | ||
| + | * Grundlegende Absicherung der MariaDB-Installation auf beiden Servern | ||
| + | * Vorbereitung und Konfiguration des Master-Servers | ||
| + | * Erstellung eines speziellen Benutzers für die Replikation | ||
| + | * Einrichtung und Aktivierung der Replikation auf dem Slave-Server | ||
| + | * Überprüfung der korrekten Funktion durch eine Testdatenbank | ||
== Voraussetzungen == | == Voraussetzungen == | ||
| Zeile 24: | Zeile 34: | ||
== Zugriff von Slave auf Master erlauben (Master) == | == Zugriff von Slave auf Master erlauben (Master) == | ||
Verzeichnis erstellen | Verzeichnis erstellen | ||
| − | *mkdir -p /var/log/mysql | + | * mkdir -p /var/log/mysql |
| − | *chown -R mysql:mysql /var/log/mysql | + | * chown -R mysql:mysql /var/log/mysql |
| − | |||
Auf dem Master eine Konfigurationsdatei bearbeiten: | Auf dem Master eine Konfigurationsdatei bearbeiten: | ||
| − | *vi /etc/mysql/mariadb.conf.d/50-server.cnf | + | * vi /etc/mysql/mariadb.conf.d/50-server.cnf |
Folgende Zeilen unter [mysqld] eintragen: | Folgende Zeilen unter [mysqld] eintragen: | ||
bind-address = 192.168.178.128 | bind-address = 192.168.178.128 | ||
server-id = 1 | server-id = 1 | ||
| − | log_bin = /var/log/mysql/ | + | log_bin = /var/log/mysql/mariadb-bin.log |
binlog_format = ROW | binlog_format = ROW | ||
| Zeile 85: | Zeile 94: | ||
Folgendes Kommando ausführen (File, Position und Passwort entsprechend anpassen): | Folgendes Kommando ausführen (File, Position und Passwort entsprechend anpassen): | ||
| − | * CHANGE MASTER TO MASTER_HOST='192.168.178.128', MASTER_USER='repl', MASTER_PASSWORD='sicheres_passwort', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS= | + | * CHANGE MASTER TO MASTER_HOST='192.168.178.128', MASTER_USER='repl', MASTER_PASSWORD='sicheres_passwort', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=805; |
Replikation starten: | Replikation starten: | ||
| Zeile 108: | Zeile 117: | ||
Die Datenbank '''replikationstest''' sollte sichtbar sein. | Die Datenbank '''replikationstest''' sollte sichtbar sein. | ||
| + | = Nützliche Befehle zur Kontrolle der Replikation = | ||
| + | |||
| + | == Auf dem Slave-Server == | ||
| + | |||
| + | ;Status der Replikation anzeigen | ||
| + | * SHOW SLAVE STATUS\G | ||
| + | |||
| + | ;Nur den wichtigsten Teil prüfen | ||
| + | * SELECT @@slave_io_running, @@slave_sql_running; | ||
| + | |||
| + | ;Slave stoppen (z. B. für Wartung) | ||
| + | * STOP SLAVE; | ||
| + | |||
| + | ;Slave wieder starten | ||
| + | * START SLAVE; | ||
| + | |||
| + | ;Logs zur Replikation anzeigen (ab MariaDB 10.5) | ||
| + | * SHOW REPLICA STATUS\G | ||
| + | |||
| + | == Auf dem Master-Server == | ||
| + | |||
| + | ;Aktuellen Binlog-Status anzeigen | ||
| + | * SHOW MASTER STATUS; | ||
| + | |||
| + | ;Welche Benutzer verbunden sind (inkl. Replikation) | ||
| + | * SHOW PROCESSLIST; | ||
| + | |||
| + | ;Alle aktiven Binlog-Dateien anzeigen | ||
| + | * SHOW BINARY LOGS; | ||
| + | |||
| + | == Allgemein hilfreich == | ||
| + | |||
| + | ;Konfiguration überprüfen | ||
| + | * SHOW VARIABLES LIKE 'server_id'; | ||
| + | * SHOW VARIABLES LIKE 'log_bin%'; | ||
| + | |||
| + | ;Fehlerprotokoll prüfen (Systemlog) | ||
| + | * journalctl -u mariadb.service | ||
| + | |||
| + | ;Letzte 20 Zeilen des Error-Logs | ||
| + | * tail -n 20 /var/log/mysql/error.log | ||
Aktuelle Version vom 24. März 2025, 18:06 Uhr
MariaDB absichern und Replikation einrichten
Dieses Skript beschreibt, wie du zwei MariaDB-Server absicherst und eine einfache Master-Slave-Replikation einrichtest. Dabei kannst du auf dem Master-Server Daten schreiben und ändern, die automatisch auf den Slave-Server übertragen werden. Das erhöht Datensicherheit und Verfügbarkeit, da der Slave-Server für Backups oder Lastverteilung (nur lesend) verwendet werden kann.
Der Ablauf umfasst:
- Grundlegende Absicherung der MariaDB-Installation auf beiden Servern
- Vorbereitung und Konfiguration des Master-Servers
- Erstellung eines speziellen Benutzers für die Replikation
- Einrichtung und Aktivierung der Replikation auf dem Slave-Server
- Überprüfung der korrekten Funktion durch eine Testdatenbank
Voraussetzungen
- Master-Server (MariaDB): 192.168.178.128
- Slave-Server (MariaDB): 192.168.178.129
- Beide Systeme sind frisch installiert und erreichbar.
- Root-Zugriff auf beiden Systemen vorhanden.
MariaDB absichern
Auf beiden Servern
- Fragen bei mysql_secure_installation beantworten
Im folgenden Beispiel sind alle Antworten für eine sichere MariaDB-Installation geeignet:
- Enter current password for root (enter for none): [dein aktuelles Passwort oder Enter, falls keines gesetzt]
- Switch to unix_socket authentication [Y/n]: n
- Change the root password? [Y/n]: n
- Remove anonymous users? [Y/n]: Y
- Disallow root login remotely? [Y/n]: Y
- Remove test database and access to it? [Y/n]: Y
- Reload privilege tables now? [Y/n]: Y
Zugriff von Slave auf Master erlauben (Master)
Verzeichnis erstellen
- mkdir -p /var/log/mysql
- chown -R mysql:mysql /var/log/mysql
Auf dem Master eine Konfigurationsdatei bearbeiten:
- vi /etc/mysql/mariadb.conf.d/50-server.cnf
Folgende Zeilen unter [mysqld] eintragen:
bind-address = 192.168.178.128 server-id = 1 log_bin = /var/log/mysql/mariadb-bin.log binlog_format = ROW
Danach MariaDB neu starten:
- systemctl restart mariadb
Benutzer für die Replikation erstellen (Master)
Auf Master als root einloggen:
- mysql -u root -p
Replikationsbenutzer anlegen (Passwort anpassen):
- CREATE USER 'repl'@'192.168.178.129' IDENTIFIED BY 'sicheres_passwort';
- GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.178.129';
- FLUSH PRIVILEGES;
Aktuelle binäre Log-Position ermitteln:
- SHOW MASTER STATUS;
Notiere File und Position.
+--------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +--------------------+----------+--------------+------------------+ | mariadb-bin.000001 | 805 | | | +--------------------+----------+--------------+------------------+ 1 row in set (0.000 sec)
Slave vorbereiten
Verzeichnis erstellen:
- mkdir -p /var/log/mysql
- chown -R mysql:mysql /var/log/mysql
Konfigurationsdatei auf Slave bearbeiten:
- vi /etc/mysql/mariadb.conf.d/50-server.cnf
Unter [mysqld] eintragen:
bind-address = 192.168.178.129 server-id = 2 relay-log = /var/log/mysql/mariadb-relay-bin.log log_bin = /var/log/mysql/mariadb-bin.log binlog_format = ROW
Danach MariaDB neu starten:
- systemctl restart mariadb
Replikation auf Slave aktivieren
Auf Slave-Server als root einloggen:
- mysql -u root -p
Folgendes Kommando ausführen (File, Position und Passwort entsprechend anpassen):
- CHANGE MASTER TO MASTER_HOST='192.168.178.128', MASTER_USER='repl', MASTER_PASSWORD='sicheres_passwort', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=805;
Replikation starten:
- START SLAVE;
Status überprüfen
Replikationsstatus kontrollieren:
- SHOW SLAVE STATUS\G
Folgende Einträge sollten geprüft werden:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
Test der Replikation
Auf dem Master-Server eine Test-Datenbank erstellen:
- mysql -u root -p
- CREATE DATABASE replikationstest;
Auf dem Slave-Server kontrollieren, ob die Datenbank angekommen ist:
- mysql -u root -p
- SHOW DATABASES;
Die Datenbank replikationstest sollte sichtbar sein.
Nützliche Befehle zur Kontrolle der Replikation
Auf dem Slave-Server
- Status der Replikation anzeigen
- SHOW SLAVE STATUS\G
- Nur den wichtigsten Teil prüfen
- SELECT @@slave_io_running, @@slave_sql_running;
- Slave stoppen (z. B. für Wartung)
- STOP SLAVE;
- Slave wieder starten
- START SLAVE;
- Logs zur Replikation anzeigen (ab MariaDB 10.5)
- SHOW REPLICA STATUS\G
Auf dem Master-Server
- Aktuellen Binlog-Status anzeigen
- SHOW MASTER STATUS;
- Welche Benutzer verbunden sind (inkl. Replikation)
- SHOW PROCESSLIST;
- Alle aktiven Binlog-Dateien anzeigen
- SHOW BINARY LOGS;
Allgemein hilfreich
- Konfiguration überprüfen
- SHOW VARIABLES LIKE 'server_id';
- SHOW VARIABLES LIKE 'log_bin%';
- Fehlerprotokoll prüfen (Systemlog)
- journalctl -u mariadb.service
- Letzte 20 Zeilen des Error-Logs
- tail -n 20 /var/log/mysql/error.log