GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So konfigurieren Sie die MySQL-Master-Slave-Replikation unter Ubuntu 18.04

Die MySQL-Replikation ist ein Prozess, der es ermöglicht, Daten von einem Datenbankserver automatisch auf einen oder mehrere Server zu kopieren.

MySQL unterstützt eine Reihe von 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.

Dieses Tutorial behandelt ein grundlegendes Beispiel für die MySQL-Master/Slave-Replikation mit einem Master- und einem Slave-Server unter Ubuntu 18.04. Die gleichen Schritte gelten für MariaDB.

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 #

Dieses Beispiel geht davon aus, dass Sie zwei Server mit Ubuntu 18.04 haben, die über ein privates Netzwerk miteinander kommunizieren können. Wenn Ihr Hosting-Provider keine privaten IP-Adressen anbietet, 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 Server in diesem Beispiel haben die folgenden IPs:

Master IP: 192.168.121.190
Slave IP:  192.168.121.236

Installieren Sie MySQL #

Die standardmäßigen Ubuntu 18.04-Repositories enthalten MySQL-Version 5.7. Um Probleme zu vermeiden, ist es am besten, auf beiden Servern dieselbe MySQL-Version zu installieren.

Installieren Sie MySQL auf dem Master-Server:

sudo apt-get updatesudo apt-get install mysql-server

Installieren Sie MySQL auf dem Slave-Server mit den gleichen Befehlen:

sudo apt-get updatesudo apt-get install mysql-server

Konfigurieren Sie den Master-Server #

Der erste Schritt besteht darin, den Master-MySQL-Server zu konfigurieren. Wir werden die folgenden Änderungen vornehmen:

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

Öffnen Sie dazu die MySQL-Konfigurationsdatei und kommentieren oder setzen Sie Folgendes:

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

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

sudo systemctl restart mysql

Im nächsten Schritt erstellen Sie einen neuen Replikationsbenutzer. Melden Sie sich als Root-Benutzer beim MySQL-Server an, indem Sie Folgendes eingeben:

sudo mysql

Führen Sie in der MySQL-Eingabeaufforderung die folgenden SQL-Abfragen aus, die das replica erstellen Benutzer und gewähren Sie den REPLICATION SLAVE Privileg für den Benutzer:

CREATE USER 'replica'@'192.168.121.236' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.236';
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: 629
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

Notieren Sie sich den Dateinamen ‘mysql-bin.000001’ und Position ‘629‘ . Sie benötigen diese Werte bei der Konfiguration des Slave-Servers. Diese Werte werden auf Ihrem Server wahrscheinlich anders sein.

Konfiguriere den Slave-Server #

Wie beim obigen Master-Server nehmen wir die folgenden Änderungen am Slave-Server vor:

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

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

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

Starten Sie den MySQL-Dienst neu:

sudo systemctl restart mysql

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 MySQL-Shell an:

sudo mysql

Stoppen Sie zuerst die Slave-Threads:

STOP SLAVE;

Führen Sie die folgende Abfrage aus, die den Slave so einrichtet, dass er den Master repliziert:

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

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 wie erwartet funktioniert, erstellen wir 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)

Ubuntu
  1. So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie VNC unter Ubuntu 20.04

  3. So installieren Sie MySQL Server unter Ubuntu 16.04

  4. So installieren Sie MySQL Server unter Ubuntu 17.04

  5. So installieren Sie MySQL unter Ubuntu 16.04

So installieren Sie MySQL 8.0 auf Ubuntu 18.04

MySQL 8 Master-Slave-Replikation auf Ubuntu 20.04

So installieren Sie MySQL-Server in Ubuntu

So installieren und konfigurieren Sie MySQL unter Ubuntu 18.04

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

So installieren Sie MySQL Server unter Ubuntu 20.04