MariaDB Replikation: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(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/mysql-bin.log
+
  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=1234;
+
* 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