Der Slave-Server muss sich mit dem Master verbinden, um das Binärprotokoll zu lesen. Aus Sicherheitsgründen ist es bewährte Praxis, für diesen Zweck ein dediziertes Benutzerkonto mit eingeschränkten Berechtigungen zu erstellen. In diesem Schritt erstellen Sie einen Replikationsbenutzer und füllen die Testdatenbank, um die Replikation in Aktion zu beobachten.
-
Verbindung zum Master-Server herstellen:
Öffnen Sie eine MySQL-Shell innerhalb des mysql-master-Containers.
docker exec -it mysql-master mysql -uroot -plab_password
-
Replikationsbenutzer erstellen:
Geben Sie an der Eingabeaufforderung mysql> den folgenden Befehl aus, um einen Benutzer namens repl_user mit dem Passwort repl_password zu erstellen. Dieser Benutzer wird vom Slave für die Verbindung verwendet. Wir verwenden '@'%', um dem Benutzer die Verbindung von jedem Host zu erlauben, einschließlich unseres Slave-Containers im Docker-Netzwerk.
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
-
Replikationsberechtigungen erteilen:
Der neue Benutzer benötigt die Berechtigung REPLICATION SLAVE, die es ihm erlaubt, die Binärprotokolle vom Master zu lesen.
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
Nachdem Sie die Berechtigungen erteilt haben, laden Sie die Grant-Tabellen neu, um die Änderungen sofort anzuwenden.
FLUSH PRIVILEGES;
-
Status des Master-Binärprotokolls überprüfen:
Bevor Sie den Slave konfigurieren, müssen Sie die genauen Koordinaten im Binärprotokoll des Masters kennen, an denen der Slave mit der Replikation beginnen soll. Der Befehl SHOW MASTER STATUS liefert diese Informationen.
SHOW MASTER STATUS;
Die Ausgabe wird ähnlich wie diese aussehen. Notieren Sie sich die Werte für File und Position, da Sie diese im nächsten Schritt benötigen werden.
+------------------+----------+------------------+--------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+------------------+--------------------+-------------------+
| mysql-bin.000001 | 337 | replication_db | | |
+------------------+----------+------------------+--------------------+-------------------+
1 row in set (0.00 sec)
-
Testtabelle und Daten erstellen:
Die Datenbank replication_db wurde beim Start des Containers erstellt. Erstellen wir eine Tabelle und fügen einige Daten ein, um die Replikation zu testen.
USE replication_db;
CREATE TABLE messages (
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255)
);
INSERT INTO messages (content) VALUES ('Hello from the master!');
Sie können überprüfen, ob die Daten korrekt eingefügt wurden.
SELECT * FROM messages;
Sie sollten die gerade eingefügte Zeile sehen.
+----+------------------------+
| id | content |
+----+------------------------+
| 1 | Hello from the master! |
+----+------------------------+
1 row in set (0.00 sec)
Beenden Sie nun die MySQL-Shell.
exit;
Sie haben nun den Master-Server vorbereitet, indem Sie einen Replikationsbenutzer und einige Testdaten erstellt haben.