So richten Sie die MySQL-Master-Sklaven-Replikation ein
- 1429
- 241
- Madleen Vater
Die MySQL -Replikation ist ein Prozess, bei dem ein Master -Server seine Daten auf einen oder mehrere Sklavenserver repliziert. Dies kann verschiedene Vorteile bieten, wie z. B. erhöhte Datenverfügbarkeit, verbesserte Leistung und einfachere Sicherungen. Ein wichtiger Aspekt der Replikation ist die Sicherheit. In diesem Artikel werden wir untersuchen.
Durch die Verwendung von SSL -Zertifikaten können wir sicherstellen, dass die replizierten Daten sicher sind und nur von autorisierten Parteien zugegriffen werden können. Darüber hinaus können SSL -Zertifikate auch zur Authentifizierung der Master- und Slave -Server verwendet werden, die eine zusätzliche Sicherheitsebene bereitstellen.
In diesem Artikel werden wir den Prozess der Einrichtung einer Master-Slave-Replikationskonfiguration mit SSL-Zertifikaten durchführen, einschließlich Erstellen und Installieren der Zertifikate, Konfigurieren der Master- und Slave-Server sowie Fehlerbehebung mit allgemeinen Problemen.
MySQL Replication Profits
Die Hauptvorteile der MySQL-Master-Sklaven-Replikation sind:
- Leistung: Einer der Hauptvorteile besteht darin, dass die Auslastung von schreibgeschützten Abfragen von der Master-Datenbank zu den Sklaven ermöglicht wird, wodurch die Leistung und Skalierbarkeit des Datenbanksystems verbessert wird. Dies liegt daran.
- Redundanz und Fehlertoleranz: Ein weiterer Vorteil der MySQL-Master-Sklaven-Replikation ist, dass sie ein Maß an Redundanz und Fehlertoleranz bietet. Wenn die Master -Datenbank ausfällt, können die Sklaven weiterhin Leseanforderungen stellen und Ausfallzeiten minimieren. Wenn eine Sklavendatenbank ausfällt, kann sie außerdem durch einen neuen Sklaven ersetzt werden und die Daten können vom Master neu synchronisiert werden.
- Backup und Genesung: MySQL Master-Slave-Replikation kann auch für Sicherungen und Datenwiederherstellung verwendet werden. Durch regelmäßiges Einnehmen von Backups der Sklaven können Sie eine Kopie der Daten haben, die bei einer Katastrophe in der Master -Datenbank verwendet werden können.
Dieser Artikel hilft Ihnen dabei, die Master-Sklaven-Replikation zwischen zwei MySQL-Servern einzurichten. Dieses Tutorial wird auf Ubuntu 22 getestet.04 Linux -Instanz mit MySQL 8.0 Datenbankserver.
Setup -Details:
Für den Testzweck habe ich zwei Systeme in meinem lokalen Netzwerk erstellt. Beide Systeme haben eine andere IP desselben Netzwerks. Angenommen, die Master- und Slave -Datenbankserver haben die folgenden IPs wie unten:
Master Server: 11.11.11.11 Sklavenserver: 22.22.22.22
Wenn Sie unterschiedliche Versionen von MySQL auf Master und Slave verwenden, verwenden Sie diesen Link, um die Kompatibilität zu überprüfen.
Schritt 1: SSL -Zertifikate erstellen [Master]
Zuerst müssen Sie ein CA -Zertifikat erstellen. Eine Zertifikatbehörde (CA) ist eine vertrauenswürdige Organisation von Drittanbietern, die digitale Zertifikate ausstellt, die zur Überprüfung der Identität und Authentizität eines Unternehmens verwendet werden. Anschließend können wir ein digitales Zertifikat für das vom CA -Zertifikat unterzeichnete Master- und Client -System generieren.
- Erstellen Sie ein Verzeichnis, um die neuen SSL -Zertifikate zu speichern.
mkdir/etc/mysql/certs
CD/etc/mysql/certs
- Generieren Sie nun das Zertifikat so, dass sie als Zertifikatbehörde verwendet werden.
OpenSSL Genrsa 4096> Ca-Key.Pem
OpenSSL Req -NEW -x509 -nodes -days 9999 -key Ca -Key.pem> ca-cert.Pem
- Generieren Sie das Zertifikat für den MySQL Master Server:
OpenSSL REQ -NEWKEY RSA: 4096 -Tage 9999 -nodes -Keyout Server -Key.PEM> Server-Req.Pem
OpenSSL X509 -REQ -in Server -REQ.PEM -Tage 9999 -ca CA -Cert.PEM -Cakey Ca -Key.PEM -Set_Serial 01> Server -Cert.Pem
- Generieren Sie dann das Zertifikat für das Client -System (Slave).
OpenSSL REQ -NEWKEY RSA: 4096 -Tage 9999 -nodes -keyout client -key -key.PEM> Client-Req.Pem
OpenSSL X509 -REQ -in Client -Req.PEM -Tage 9999 -ca CA -Cert.PEM -Cakey Ca -Key.PEM -Set_Serial 01> Client -Cert.Pem
Wichtiger Hinweis: Stellen Sie sicher, dass Sie ein anderes verwenden "Common Name (FQDN)" Für die CA -Dateien als die Master- und Client -Zertifikatsdateien.
Schritt 2: Aktualisieren Sie MySQL Configuraion -Datei [Master]
Als nächstes die MySQL -Konfigurationsdatei (z. B.:/etc/mysql/mysql.Conf.D/Mysqld.CNF) und die folgenden Einträge hinzufügen/aktualisieren:
[mysqld] server-id = 1 binLog-format = gemischt log-selbst.PEM SSL-CERT =/etc/MySQL/Certs/Server-Cert.PEM SSL-Key =/etc/mysql/certs/server-key.Pem1234567891011 | [MySQLD] server-id = 1BinLog-format = mischlog-bin-in = mysql-bininNodb_flush_log_at_trx_commit = 1sync_binlog = 1 SSLSL-Ca =/etc/mysql/certs/ca-certs.PEMSSL-CERT =/etc/MySQL/Certs/Server-Cert.PEMSSL-Key =/etc/MySQL/certs/Server-Key.Pem |
Schritt 3: Replikationsbenutzer erstellen [Master]
In diesem Schritt erstellen wir einen neuen Benutzer auf dem MySQL -Server, mit dem Clients mit dem Master -Dienst authentifiziert werden können. Melden Sie sich also beim Master -Datenbankserver mit dem privilegierten Root -Benutzern auf dem MySQL -Server an. Erstellen Sie dann einen neuen Benutzer, der für den Replikationsprozess verwendet wird.
Stellen Sie eine Verbindung zum MySQL -Server her und führen Sie die folgenden Abfragen aus, um einen neuen Benutzer zu erstellen, und gewähren ihn dem Sklavenzugriff.
MySQL> Benutzer "replikation"@'22 erstellen.22.22.22 'identifiziert von' Asecurepa $$ W0rd 'erfordern SSL; MySQL> Zuschussreplikation Sklave auf *.* Zu 'replication'@'22.22.22.22 '; MySQL> Flush -Privilegien;123 | MySQL> Benutzer "replikation"@'22 erstellen.22.22.22 'identifiziert von' Asecurepa $$ W0rd 'Erfordert SSL; MySQL> Zuschussreplikation Sklave auf *.* Zu 'replication'@'22.22.22.22 '; MySQL> Flush -Privilegien; |
Stellen Sie sicher, dass Sie '22 ersetzen.22.22.22 'Mit der IP -Adresse der Sklaveninstanz.
Stellen Sie sicher, dass Sie ein starkes Passwort für das Benutzerkonto verwenden.
Schritt 4: Dump -Datenbanken [Master]
Exportieren Sie nun alle Datenbanken in der Master -Instanz mit dem "Mysqldump" Dienstprogramm.
Mysqldump -uroot -p--skip-locktabellen--single-transaktion \-flush-logs--Hex-Blob--master-data = 2 -a | GZIP -c> Dump.sql.gz
Kopieren Sie die Dump -Datei in den Slave -Server.
SCP -Dump.sql.GZ [E -Mail geschützt]:
Der Befehl fordert das Remote -Benutzerkennwort auf. Sobald der Benutzer die Authentifizierung ist, wird die Datei im Remote -Server unter dem Home -Verzeichnis von "Root" -Konto kopiert.
Schritt 5: SSL -Zertifikate Dateien kopieren [Master]
Kopieren Sie den Client -Schlüssel und den Zertifikat- und CA -Zertifikatdateien in die Sklaveninstanz. Stellen Sie sicher, dass die "/etc/mysql/certs" Verzeichnis existiert ein Fernsystem.
SCP/etc/mysql/certs/ca-cert.PEM [E -Mail geschützt]:/etc/mysql/certs/
scp/etc/mysql/certs/client-cert.PEM [E -Mail geschützt]:/etc/mysql/certs/
scp/etc/mysql/certs/client-key.PEM [E -Mail geschützt]:/etc/mysql/certs/
Hinweis: Konfigurieren Sie SSH -Tasten für die automatische Anmeldung oder verwenden Sie Kennwörter, um eine Verbindung zu Remote herzustellen.
Schritt 6: Wiederherstellung der Datenbanksicherung [Slave]
Melden Sie sich beim MySQL Replication Client Server an. Extrahieren Sie die Dump -Datei mit Gunzip -Dienstprogramm. Danach die Datenbank wiederherstellen.
Gunzip Dump.sql.gz
MySQL -uroot -p -f < dump.sql
Überprüfen Sie dann die Position der Protokolldatei in der Sicherungsdatei.
Kopfschub.SQL -n80 | Grep "master_log_pos"
Die Ausgabe sieht so aus:
Ausgabe-Master in master_log_file = "mysql-bin-bin ändern.000007 ", master_log_pos = 154;
Beachten Sie das Master_log_file Und Master_log_pos Werte, die später in diesem Artikel verwendet werden.
Schritt 7: Aktualisieren Sie die Slave MySQL -Konfiguration [Slave]:
Als nächstes die MySQL -Konfigurationsdatei (z. B.:/etc/mysql/mysql.Conf.D/Mysqld.CNF) und fügen/aktualisieren die Folgen hinzu:
[MySQLD] Server-ID = 2 BinLog-Format = gemischtes log-bin-bin- = mysql-bin-relay-log = Mysql-Relay-Bin-Log-Slave-Updates = 1 schreibgeschützt = 11234567 | [MySQLD] server-id = 2BinLog-format = mischlog-bin-bin = mysql-binelay-log = mysql-relay-BinLog-Slave-Updates = 1Read-Nur-Nur = 1 |
Schritt 8: Sklavenreplikation starten [Slave]
Konfigurieren Sie die Slave -Instanz mit der IP -Adresse der Master -Instanz zusammen mit Replikationsbenutzer, ihrem Kennwort und dem Zertifikat, das von der Master -Instanz kopiert wurde. Stellen Sie sicher, dass Sie aktualisieren 'Mysql-bin.###### '
Und 'Master_log_pos = ###'
Das gleiche wie wir in Schritt 6 bekommen. Fügen Sie alle Nullen ein.
12345678 | MySQL> Master Master in Master_Host = '11 ändern.11.11.11 ', master_user =' replication ', master_password =' asecurepa $$ w0rd ', Master_SSL_CA ='/etc/mysql/certs/ca-cert.PEM ', Master_SSL_CERT ='/etc/mysql/certs/client-cert.PEM ', master_ssl_key ='/etc/mysql/certs/client-key.PEM ', Master_SSL = 1, Master_log_file =' MySQL-bin-bin-bin.###### ', master_log_pos = ###; |
Starten Sie schließlich den Replikationsprozess:
MySQL> Sklave starten;1 | MySQL> Sklave starten; |
Dies ermöglicht und starten Sie den Replikationsprozess.
Schritt 9: Replikation überprüfen
Sie können die ausführen "Sklavenstatus anzeigen"
Fragen Sie nach dem aktuellen Status der Replikation ab:
1 | MySQL> Slave Status \ g anzeigen |
Ausgabe ************************* 1. Zeile *************************** SLAVE_IO_STATE: Warten auf die Quelle, die Ereignis Master_host: 11 sendet.11.11.11 Master_User: Replikation Master_Port: 3306 Connect_retry: 60 Master_log_file: MySQL-bin-bin.000177 read_master_log_pos: 100443919 relay_log_file: mysql-relay-bins.000498 RELAY_LOG_POS: 104189538 RELAY_MASTER_LOG_FILE: MYSQL-BIN.000169 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 104189322 Relay_Log_Space: 972921462 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql /certs/ca-cert.PEM Master_SSL_CA_PATH: Master_SSL_CERT:/etc/mysql/certs/client-cert.PEM Master_SSL_CIPHER: Master_SSL_Key:/etc/mysql/certs/client-key.PEM Seconds_Behind_Master: 13803 MASTER_SL_VERIFY_SERVER_CERT: NEIN LEST_IO_ERRNO: 0 LEAL_IO_ERROR: last_sql_errno: 0 last_sql_error: replicate_ignore_server_ids: Master_S.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Waiting for dependent transaction to commit Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row im Set, 1 Warnung (0.00 Sek.)
Überprüfen Sie den Wert von 'Sekunden_Behind_Master' '. Der Wert Null (0) bedeutet, dass beide Systeme vollständig synchronisiert sind.
Die mySQL-Master-Slave-Replikation wurde erfolgreich in Ihrem System konfiguriert und befindet sich im Arbeitsmodus. Vielen Dank, dass Sie dieses Tutorial verwendet haben, bitte vergessen Sie nicht, es mit Ihren Freunden zu teilen.
Abschluss
In diesem Artikel haben wir den Prozess der Konfiguration der MySQL-Master-Slave-Replikation mit Authentifizierung mithilfe von SSL-Zertifikaten behandelt. Wir haben die Schritte zum Erstellen und Installieren der Zertifikate, der Konfiguration der Master- und Slave -Server sowie zur Fehlerbehebung bei allgemeinen Problemen durchlaufen. Durch die Verwendung von SSL -Zertifikaten haben wir sichergestellt, dass die replizierten Daten sicher sind und nur von autorisierten Parteien zugegriffen werden können. Darüber hinaus wurden SSL -Zertifikate verwendet, um die Master- und Slave -Server zu authentifizieren und eine zusätzliche Sicherheitsebene bereitzustellen. Dieser Ansatz kann Unternehmen helfen, die Sicherheit ihrer Replikationsumgebung zu verbessern und die Integrität und Vertraulichkeit ihrer Daten zu gewährleisten.
Insgesamt ist die Replikation von MySQL Master-Slave ein nützliches Instrument zur Verbesserung der Leistung, Skalierbarkeit und Fehlertoleranz eines MySQL-Datenbanksystems. Es ermöglicht die Verteilung von Daten über mehrere Server hinweg und kann für Sicherungen und Datenwiederherstellung verwendet werden.
- « Ein einfaches Bash -Skript für die Backup für MySQL -Datenbank
- So debuggen Sie ein Shell -Skript? »