MariaDB Replikation: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 53: Zeile 53:
  
 
Notiere '''File''' und '''Position'''.
 
Notiere '''File''' und '''Position'''.
 +
<pre>
 +
+--------------------+----------+--------------+------------------+
 +
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 +
+--------------------+----------+--------------+------------------+
 +
| mariadb-bin.000001 |      805 |              |                  |
 +
+--------------------+----------+--------------+------------------+
 +
1 row in set (0.000 sec)
 +
</pre>
  
 
== Slave vorbereiten ==
 
== Slave vorbereiten ==

Version vom 24. März 2025, 17:47 Uhr

MariaDB absichern und Replikation einrichten

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/mysql-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

Konfigurationsdatei auf Slave bearbeiten:

  • nano /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

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=1234;

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.