GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So konfigurieren Sie die MySQL (MariaDB) Master-Slave-Replikation unter Debian 10

Die MySQL-Replikation ist ein Prozess, bei dem Daten von einem Datenbankserver (Master) auf einen oder mehrere Server (Slaves) kopiert werden.

MySQL unterstützt mehrere Replikationstopologien, wobei die Master/Slave-Topologie eine der bekanntesten Topologien ist, in der ein Datenbankserver als Master fungiert, während ein oder mehrere Server als Slaves fungieren. Standardmäßig ist die Replikation asynchron, wobei der Master Ereignisse sendet, die Datenbankänderungen an sein Binärlog beschreiben, und Slaves die Ereignisse anfordern, wenn sie bereit sind.

In diesem Handbuch zeigen wir Ihnen, wie Sie die MariaDB-Master/Slave-Replikation mit einem Master- und einem Slave-Server unter Debian 10 einrichten. MariaDB ist die Standardimplementierung von MySQL in Debian. Die gleichen Schritte gelten für Oracle MySQL.

Diese Art der Replikationstopologie eignet sich am besten für die Bereitstellung von Lesereplikaten für die Leseskalierung, die Sicherung von Live-Datenbanken für die Notfallwiederherstellung und für Analyseaufträge.

Voraussetzungen #

Wir gehen davon aus, dass Sie zwei Server mit Debian 10 haben, die über ein privates Netzwerk miteinander kommunizieren. Wenn Ihr Hosting-Provider keine privaten IP-Adressen unterstützt, können Sie die öffentlichen IP-Adressen verwenden und Ihre Firewall so konfigurieren, dass Datenverkehr auf Port 3306 nur von vertrauenswürdigen Quellen zugelassen wird.

Die in diesem Beispiel verwendeten Server haben die folgenden IP-Adressen:

Master IP: 10.10.8.12
Slave IP:  10.10.8.164

Installieren von MariaDB #

Die standardmäßigen Debian 10-Repositories enthalten MariaDB Version 10.3. Es ist am besten, dieselbe MariaDB-Version auf beiden Servern zu installieren, um mögliche Probleme zu vermeiden.

Installieren Sie MariaDB sowohl auf dem Master als auch auf dem Slave, indem Sie die folgenden Befehle ausführen:

sudo apt-get updatesudo apt-get install mariadb-server

Konfigurieren des Masterservers #

Der erste Schritt besteht darin, den Masterserver einzurichten. Wir werden die folgenden Änderungen vornehmen:

  • Stellen Sie den MariaDB-Server so ein, dass er auf der privaten IP lauscht.
  • Legen Sie eine eindeutige Server-ID fest.
  • Binäre Protokollierung aktivieren.

Öffnen Sie die MariaDB-Konfigurationsdatei und kommentieren Sie die folgenden Zeilen aus oder setzen Sie sie:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
master:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.12
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

Wenn Sie fertig sind, speichern Sie die Datei und starten Sie den MySQL-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart mariadb

Im nächsten Schritt erstellen Sie einen neuen Replikationsbenutzer. Melden Sie sich als Root-Benutzer beim MariaDB-Server an:

sudo mysql

Führen Sie die folgenden SQL-Abfragen aus, um einen Benutzer namens replica zu erstellen und gewähren Sie den REPLICATION SLAVE Privileg für den Benutzer:

CREATE USER 'replica'@'10.10.8.164' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.10.8.164';
Stellen Sie sicher, dass Sie die IP mit Ihrer Slave-IP-Adresse ändern. Sie können den Benutzer nach Belieben benennen.

Während Sie sich noch in der MySQL-Eingabeaufforderung befinden, führen Sie den folgenden Befehl aus, der den binären Dateinamen und die Position ausgibt.

SHOW MASTER STATUS\G
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 328
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.001 sec)

Notieren Sie sich den Dateinamen ‘mysql-bin.000001’ und Position ‘328‘ . Diese Werte werden beim Konfigurieren des Slave-Servers benötigt und werden wahrscheinlich auf Ihrem Server anders sein.

Konfigurieren des Slave-Servers #

Wir nehmen auf dem Slave-Server die gleichen Änderungen vor wie auf dem Master:

  • Stellen Sie den MySQL-Server so ein, dass er auf der privaten IP lauscht.
  • Legen Sie eine eindeutige Server-ID fest.
  • Binäre Protokollierung aktivieren.

Öffnen Sie die MariaDB-Konfigurationsdatei und bearbeiten Sie die folgenden Zeilen:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
slave:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.164
server-id              = 2
log_bin                = /var/log/mysql/mysql-bin.log

Starten Sie den MariaDB-Dienst neu:

sudo systemctl restart mariadb

Der nächste Schritt besteht darin, die Parameter zu konfigurieren, die der Slave-Server verwendet, um sich mit dem Master-Server zu verbinden. Melden Sie sich bei der MariaDB-Shell an:

sudo mysql

Beginnen Sie damit, die Slave-Threads zu stoppen:

STOP SLAVE;

Führen Sie die folgende Abfrage aus, um die Master/Slave-Replikation zu konfigurieren:

CHANGE MASTER TOMASTER_HOST='10.10.8.12',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=328;

Stellen Sie sicher, dass Sie die richtige IP-Adresse, den richtigen Benutzernamen und das richtige Passwort verwenden. Der Name und die Position der Protokolldatei müssen mit den Werten übereinstimmen, die Sie vom Masterserver erhalten haben.

Wenn Sie fertig sind, starten Sie die Slave-Threads.

START SLAVE;

Testen Sie die Konfiguration #

An diesem Punkt sollten Sie über eine funktionierende Master/Slave-Replikationskonfiguration verfügen.

Um zu überprüfen, ob alles richtig eingerichtet ist, erstellen Sie eine neue Datenbank auf dem Masterserver:

sudo mysql
CREATE DATABASE replicatest;

Melden Sie sich bei der Slave-MySQL-Shell an:

sudo mysql

Führen Sie den folgenden Befehl aus, um alle Datenbanken aufzulisten:

SHOW DATABASES;

Sie werden feststellen, dass die Datenbank, die Sie auf dem Master-Server erstellt haben, auf dem Slave repliziert wird:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Debian
  1. So installieren Sie MySQL 8.0 / 5.7 unter Debian 11 / Debian 10

  2. So installieren und konfigurieren Sie Mariadb 10 in Debian 11

  3. So installieren Sie MySQL Server unter Debian 9

  4. So installieren Sie MySQL Server auf Debian 10 Buster

  5. So installieren Sie Zabbix auf Debian 9

So konfigurieren Sie NTP-Server und -Client unter Debian 10

So konfigurieren Sie LAMP mit Debian 11

So konfigurieren Sie Samba Server mit Debian 11

So installieren Sie MySQL 8.0 Server auf Debian 11 Bullseye

So installieren Sie MySQL/MariaDB unter Debian 11

Wie richte ich die MySQL-Master-Slave-Replikation auf RHEL 7 ein?