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

So konfigurieren Sie eine MySQL-Slave-Datenbank

MySQL Replication ermöglicht es, dass sich mehrere Kopien derselben Datenbank gleichzeitig auf mehreren Servern befinden, indem Daten automatisch vom Primärserver auf den "Slave"-Server kopiert werden.

Dank dieses Mechanismus können alle auf dem Master ausgeführten Anweisungen, die irgendwie die Daten verändern, aufgezeichnet, an die replizierten Datenbanken übertragen und dort ausgeführt werden.

Diese Anleitung wird Ihnen helfen, MySQL auf Ihrem Server zu installieren, eine Replik richtig zu konfigurieren und ihren Betrieb mit Testdaten zu überprüfen.

Verbinden Sie sich zunächst über eine SSH-Verbindung mit Ihrem Server. Wenn Sie dies noch nicht getan haben, wird empfohlen, unserer Anleitung zu folgen, um sich sicher mit dem SSH-Protokoll zu verbinden. Im Falle eines lokalen Servers gehen Sie zum nächsten Schritt und öffnen Sie Ihr Server-Terminal.

MySQL-Installation

Um die Master/Slave-Replikation auf beiden Servern einzurichten, installieren Sie eine Version von MySQL und führen Sie dann das folgende Installationsverfahren auf beiden Maschinen aus, bevor Sie mit dem nächsten Kapitel fortfahren.

Aktualisieren Sie die Distributions-Repositories, um sicherzustellen, dass Sie die aktuellste Version von MySQL herunterladen:

$ sudo apt update

Wenn Sie diesen Befehl bereits zuvor ausgeführt haben, fahren Sie mit dem nächsten Schritt fort.

Fahren Sie nun mit der MySQL-Installation fort:

$ sudo apt install mysql-server

Um sicherzustellen, dass die Installation erfolgreich war, überprüfen Sie die MySQL-Version:

$ mysqld --version

Wenn der Vorgang erfolgreich durchgeführt wurde, wird die installierte MySQL-Version auf dem Bildschirm ausgegeben.

Fahren Sie mit der Sicherung von MySQL fort, indem Sie ein in MySQL enthaltenes Skript ausführen, das die Sicherheit erhöht und den Zugriff auf Ihre Datenbanken einschränkt:

$ sudo mysql_secure_installation

An dieser Stelle führt Sie eine geführte Prozedur durch die Konfiguration der MySQL-Sicherheitsstufe.

Zuerst werden Sie gefragt, ob Sie das Passwort-Validierungssystem aktivieren möchten. Wenn aktiviert, wird beim Setzen eines Benutzerpassworts das Passwort ausgewertet und wenn es die Sicherheitskriterien nicht erfüllt, wird es mit einem Fehler zurückgewiesen.

Später werden Sie gefragt, ob Sie das Root-Passwort mit einem Ihrer Wahl ändern möchten (wenn Sie das Passwort-Validierungssystem aktivieren, muss ein Passwort eingegeben werden, das den Sicherheitskriterien entspricht).

Es wird empfohlen, mehrere Best Practices zum Erstellen eines sicheren Passworts zu befolgen. Dazu gehören:

  • die Verwendung von Groß- und Kleinbuchstaben

  • die Verwendung von Buchstaben und Zahlen

  • die Verwendung von nicht-alphanumerischen Zeichen wie @ # $% ˆ &!

  • die Verwendung von Passwörtern, die noch nie verwendet wurden.

Wählen Sie schließlich aus, ob Sie anonyme Benutzer entfernen, Datenbanken testen und die Remote-Anmeldung mit dem Root-Benutzer deaktivieren möchten. Für ein angemessenes Sicherheitsniveau wird empfohlen, alle diese Änderungen zu bestätigen.

Bestätigen Sie an dieser Stelle die Aktualisierungen der angezeigten Berechtigungstabelle, um alle neuen Sicherheitskriterien anzuwenden.

Starten Sie den Dienst abschließend neu, um die Änderungen zu übernehmen:

$ sudo service mysql restart

Master/Slave-Replikation konfigurieren

Nach der Installation auf beiden Servern (Master und Slave) fahren Sie fort, indem Sie zuerst den Master-Server konfigurieren.

Bearbeiten Sie zunächst die Konfigurationsdatei in /etc/mysql/mysql.conf.d/mysqld.cnf wie folgt:

server-id               = 1
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Da der Slave-Server sich zwangsläufig remote mit dem Master-Server verbinden muss, müssen Sie sicherstellen, dass der MySQL-Dienst externe Verbindungen akzeptieren kann, indem Sie die Bind-Adresse wie folgt ändern:

bind-address            = 0.0.0.0

Starten Sie nach Abschluss den Dienst neu, um die Änderungen zu übernehmen:

$ sudo service mysql restart

Erstellen Sie zu Demonstrations- und Bewertungszwecken eine Testdatenbank auf dem Masterserver (hier "Tutorial" genannt) mit einer Tabelle namens "numbers" mit fiktiven Daten. Überprüfen Sie nach Abschluss des Konfigurationsvorgangs, ob alle hier eingegebenen Daten mit dem Slave-Server synchronisiert sind:

$ sudo mysql -u root -p
mysql> CREATE DATABASE tutorial;
	Query OK, 1 row affected (0.00 sec)
	
	mysql> USE tutorial;
	Database changed
	
	mysql> CREATE TABLE numbers ( value REAL );
	Query OK, 0 rows affected (0.09 sec)
	
	mysql> INSERT INTO numbers VALUES ( 1 ), ( 2 ), ( 3 );
	Query OK, 3 rows affected (0.04 sec)
	
	Records: 3  Duplicates: 0  Warnings: 0

Stellen Sie also sicher, dass die Werte, die Sie gerade eingegeben haben, in der Testtabelle vorhanden sind:

mysql> SELECT * FROM numbers;
		
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	+-------+
	3 rows in set (0.00 sec)

Die Zahlentabelle sollte 3 Beispielzeilen enthalten, wie oben gezeigt.

Erstellen Sie anschließend die Zugangsdaten für den Benutzer, der von der Slave-Datenbank verwendet werden soll:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%' IDENTIFIED BY 'SMDipmf#23$42';
	mysql> FLUSH PRIVILEGES;

Bevor Sie mit der Konfiguration des Slave-Servers fortfahren, wird der aktuelle Status des Masters auf dem Bildschirm ausgedruckt und die folgenden Informationen werden gespeichert:

mysql> SHOW MASTER STATUS;
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| mysql-bin.000001 |     1238 | |               | |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	1 row in set (0.00 sec)

Diese Daten benötigen Sie bei der Konfiguration des Slave-Servers.

Fahren Sie fort, die MySQL-Shell zu verlassen:

mysql> exit
	Bye

Speichern Sie dann einen kompletten Datenbank-Dump, um ihn später auf dem Slave-Server zu laden:

$ sudo mysqldump -u root -p --opt tutorial > slave-init.sql
	Enter password:

Übertragen Sie die neu erstellte Datei auf den Slave-Rechner und fahren Sie mit der Konfiguration fort, indem Sie die Datei /etc/mysql/mysql.conf.d/mysqld.cnf ändern:

server-id               = 2
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Bitte beachten Sie, dass die Server-ID mit Nummer 2 geändert wurde, und denken Sie auch daran, die Bindungsadresse wie hier gezeigt zu ändern:

bind-address            = 0.0.0.0

Starten Sie nun den Slave neu, um die Änderungen zu übernehmen:

$ sudo service mysql restart

Fahren Sie nun damit fort, eine Datenbank mit demselben Namen wie der Master-Server zu erstellen:

$ sudo mysql -u root -p

	mysql> create database tutorial;
	
	Query OK, 1 row affected (0.00 sec)
	mysql> exit
	
	Bye

Importieren Sie nun das neu erstellte Backup und starten Sie den Slave mit den zuvor von der Master-Datenbank gespeicherten Informationen (MASTER_LOG_FILE und MASTER_LOG_POS):

$ sudo mysql -u root tutorial < /root/slave.sql
	$ sudo mysql -u root -p 
	mysql> CHANGE MASTER TO MASTER_HOST='195.231.4.201', MASTER_USER='usr_replica', MASTER_PASSWORD='SMDipmf#23$42', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 1238;
	
	Query OK, 0 rows affected, 2 warnings (0.10 sec)
	mysql> START SLAVE;
	
	Query OK, 0 rows affected (0.00 sec)

Von diesem Moment an werden die Datenbanken in Echtzeit synchronisiert und Sie können die MySQL-Shell verlassen.

Überprüfen der korrekten Funktionsweise der Replikation

Um die Funktionsweise der Replikation zu überprüfen, können Sie versuchen, Daten in den Master einzufügen und prüfen, ob sie korrekt in der Slave-Datenbank ankommen. Beginnen Sie mit der Eingabe neuer Daten auf dem Master wie folgt:

$ sudo mysql -u root -p
mysql> use tutorial;
	Reading table information for completion of table and column names 
	Turn off this feature to get a quicker startup with -A   
	Database changed 
	
	mysql> INSERT INTO numbers VALUES ( 4 ) , ( 5 );
	
	Query OK, 2 rows affected (0.03 sec)
	Records: 2 
	Duplicates: 0 
	Warnings: 0

Fahren Sie dann mit der Abfrage der Slave-Datenbank fort:

$ sudo mysql -u root -p

	mysql> use tutorial;
	
	Reading table information for completion of table and column names
	
	Turn off this feature to get a quicker startup with -A
	  changed
	
	mysql> SELECT * FROM numbers;
	
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	|     4 |
	|     5 |
	+-------+
	
	5 rows in set (0.00 sec)

Wie Sie sehen können, sind die neuen Werte (4 und 5) in der Slave-Datenbank angekommen, sodass die Synchronisierung korrekt funktioniert.


Linux
  1. So konfigurieren Sie einen Apache-Webserver

  2. So kopieren Sie eine MySQL-Datenbank

  3. So installieren Sie den MySQL 8-Datenbankserver unter CentOS 8

  4. So installieren Sie den MySQL-Datenbankserver unter CentOS

  5. So erlauben Sie eine Remote-Verbindung zum MySQL-Datenbankserver

So sichern Sie die WordPress-Datenbank über MySQL

So erlauben Sie den Fernzugriff auf den MySQL-Datenbankserver

MySQL-Datenbankserver

Wie man eine Datenbank in MySQL erstellt

So konfigurieren Sie NGINX auf einem CentOS 7-Server

So installieren und konfigurieren Sie einen Datenbankserver auf Jelastic Cloud