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

MySQL 8 Master-Slave-Replikation auf Ubuntu 20.04

Manchmal müssen wir möglicherweise Daten von einem MySQL-DB-Server automatisch auf einen oder mehrere MySQL-DB-Server replizieren. Grundsätzlich führen Datenbankadministratoren datenbankbezogene Aufgaben wie Replikation, Clustering und automatisches Failover durch. Die Verwaltung von MySQL-Datenbankservern und die Durchführung von Replikationsaufgaben liegen in der Verantwortung von Datenbankexperten. In diesem Artikel erfahren Sie, wie Sie die Master-Slave-MySQL-Datenbankreplikation in Ubuntu 20.04 einrichten. In diesem Artikel verwenden wir MySQL 8 für die Replikation.

Voraussetzungen

  • Zwei Ubuntu-Server
  • Root-privilegiertes Benutzerkonto
  • Internetverbindung zum Herunterladen von Paketen

In diesem Beispiel werden die folgenden Server verwendet.

  • Meister – 192.168.178.135
  • Sklave – 192.168.178.137

Installieren Sie den MySQL 8-Server auf beiden Knoten

Die Installation von MySQL ist ein einfacher und unkomplizierter Vorgang. Im Ubuntu-System kann MySQL über das APT-Paket-Repository installiert werden. Aktualisieren Sie vor der Installation den Ubuntu-Paketindex mit dem folgenden Befehl.

$apt update

Installieren Sie das MySQL-Serverpaket mit dem folgenden Befehl.

$apt install mysql-server -y

Eine Neuinstallation des MySQL-Servers lässt ihn ungesichert. Führen Sie das Skript „mysql_secure_installation“ aus ” um einige der weniger sicheren Standardoptionen wie Remote-Root-Logins, Testdatenbank, Beispielbenutzer usw. zu ändern.

$ mysql_secure_installation

Starten und aktivieren Sie den MySQL-Dienst

$ systemctl start mysql
$ systemctl enable mysql

Master-DB-Server konfigurieren

Jetzt müssen wir einige Änderungen auf dem Masterserver für die Replikation vornehmen. Bearbeiten Sie die mysqld.conf Datei im Verzeichnis /etc/mysql/mysql.conf.d und fügen Sie die folgenden Zeilen hinzu. Denken Sie daran, die Konfigurationsvariablen unter [mysqld] hinzuzufügen Abschnitt.

$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysqld-slow.log

Wo:

  • server-id – Eindeutige ID des MySQL-Servers. Diese ID kann in keinem Knoten im Cluster wiederverwendet werden.
  • log-bin – Dies ist die Datei, in der alle Replikationsinformationen gespeichert werden.
  • max_binlog_size – Größe der Binlog-Datei.

Kommentieren Sie außerdem die Bindungsadresse wie folgt:

#bind-address =127.0.0.1

Starten Sie den MySQL-Dienst neu

$systemctl restart mysql

Erstellen Sie einen neuen Benutzer für den Replikationsdienst auf dem Master-Knoten

Jetzt müssen wir einen Datenbankbenutzer in einem Master-Knoten erstellen, der von Slaves beim Verbinden verwendet wird. Melden Sie sich mit dem Root-Benutzer bei der Datenbank an und erstellen Sie den Benutzer.

$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';

Hinweis:Wenn Sie beim Erstellen des Benutzers eine IP-Adresse angeben, werden MySQL-Verbindungen nur vom angegebenen Host akzeptiert. Verbindungen von anderen Hosts werden abgelehnt. In diesem Beispiel habe ich die IP-Adresse meines MySQL-Slave-Servers verwendet. Möglicherweise müssen Sie diese IP-Adresse entsprechend Ihrer Umgebung ändern.

Der Benutzer benötigt REPLICATION SLAVE-Berechtigungen, um die MySQL-Daten replizieren zu können. Verwenden Sie die folgende Abfrage, um die Berechtigungen zu erteilen.

mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;

Überprüfen Sie die gewährten Berechtigungen mit der folgenden Abfrage.

mysql> SHOW GRANTS FOR [email protected];

Slave-DB-Knoten konfigurieren

Den MySQL-Server haben wir bereits im vorherigen Schritt installiert. Jetzt werden wir einige Konfigurationsdateien ändern, um den Replikationsprozess zu aktivieren. Bearbeiten Sie die mysqld.conf Datei unter /etc/mysql/mysql.conf.d Verzeichnis und fügen Sie die folgenden Inhalte hinzu.

$vi /etc/mysql/mysql.conf.d/mysqld.conf

Inhalt der Konfigurationsdatei:

[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log = 2

Wo,

  • Server-ID – Eindeutige MySQL-Server-ID.
  • read_only – Slave-Knoten wird in den Nur-Lese-Modus versetzt
  • log_bin – Aktiviert die binäre Protokollierung im Slave-Knoten
  • slow_query_log – Aktiviert das Log für langsame Abfragen

Kommentieren Sie auch die Bindeadresse aus.

# bind-address = 127.0.0.1

Starten Sie nun den MySQL-Dienst neu

$ systemctl restart mysql

Slave-Server mit Master-Server verbinden

Bevor Sie den Slave-Server konfigurieren, gehen Sie zum Master-Server und überprüfen Sie den Status.

$ mysql -u root -p
mysql> SHOW MASTER STATUS\G

Beachten Sie die folgenden Flags, die wir auf dem Slave-Server verwenden werden.

  • Datei:mysql-bin.000002
  • Position:156

Konfigurieren Sie nun die Parameter im Slave-Server, mit denen der Master-Server verbunden werden soll. Befolgen Sie die nachstehenden Schritte.

  • Melden Sie sich mit Root-Anmeldeinformationen beim MySQL-Server an
$ mysql -u root -p
  • Slave-Threads stoppen
mysql> STOP SLAVE;
  • Richten Sie den Slave-Server ein, um den Master-Server zu replizieren
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;

Wo,

  • 192.168.178.137 – IP-Adresse des Masterservers
  • replication_user – MySQL-Benutzer des Masterservers
  • Passwort – Kennwort des Replikationsbenutzers
  • mysql-bin.000002 – Logfile des Masterservers
  • 156 – Log-Position des Master-Servers

Aktivieren Sie nun den Slave-Server.

mysql> START SLAVE;

Überprüfen Sie den Slave-Status mit der folgenden Abfrage

mysql> SHOW SLAVE STATUS\G

Beachten Sie den Status des folgenden Flags.

  • Slave_IO_Running:Verbinden
  • Slave_IO_Running:Verbinden

Master-Slave-Replikation überprüfen

Master und Slave sind für die Replikation konfiguriert. Wir können überprüfen, ob die Master-Slave-Replikation funktioniert oder nicht. Melden Sie sich auf dem Master-Server bei der MySQL-Shell an und erstellen Sie eine Testdatenbank.

$ mysql -u root -p
mysql> CREATE DATABASE example_db;

Überprüfen Sie die erstellte Datenbank.

mysql> SHOW DATABASES;

Melden Sie sich jetzt beim Slave-Server an

$ mysql -u root -p

Führen Sie die folgende Abfrage aus, um die Datenbanken aufzulisten.

mysql> SHOW DATABASES;

Sie können sehen, dass die auf dem Master-Server erstellte Datenbank auf den Slave-Server repliziert wird.

Schlussfolgerung

In diesem Artikel haben wir gelernt, wie man MySQL-Master- und -Slave-Knoten unter Ubuntu 20.04 einrichtet. Sie können diesem Artikel folgen, um die Master-Slave-MySQL-Replikation auch auf Ubunutu 18.04 einzurichten.


Ubuntu
  1. So installieren Sie MySQL 8.0 in Ubuntu 18.04

  2. So installieren Sie MySQL unter Ubuntu 20.04

  3. Ubuntu 22.04 LAMP-Installation

  4. So installieren Sie MySQL unter Ubuntu 18.04

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

So installieren Sie MySQL-Server in Ubuntu

So installieren Sie MySQL 8.0 unter Ubuntu 18.04

So installieren Sie Lychee unter Ubuntu 14.04

Installieren Sie MYSQL Workbench auf Ubuntu 22.04

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

So installieren Sie MySQL unter Ubuntu 22.04