Vorbereitung 1. Die Master- und Slave-Datenbankversionen sollten konsistent sein 2. Daten in der Master- und Slave-Datenbank bleiben konsistent Primäre Datenbank: 121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 (Alibaba Cloud) Aus der Datenbank: 182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 (Tencent Cloud) Firewall-Konfiguration Um unnötige Angriffe zu vermeiden, konfigurieren Sie den Masterserver so, dass nur bestimmte IP-Adressen auf den Datenbankport zugreifen können. Firewall-Konfiguration der Hauptdatenbank # iptables -A INPUT -p tcp -s slave_ip --dport 3306 -j AKZEPTIEREN #Löschen Sie alle vorhandenen Konfigurationen, um mehrere doppelte Datensätze zu vermeiden. $ sudo iptables -D INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT $ sudo iptables -D INPUT -p tcp -s 127.0.0.1 --dport 3306 -j AKZEPTIEREN $ sudo iptables -D INPUT -p tcp --dport 3306 -j DROP $ sudo iptables -D INPUT -p udp --dport 3306 -j DROP $ sudo iptables -D INPUT -p sctp --dport 3306 -j DROP #Fügen Sie eine Konfiguration hinzu, um nur bestimmten Adressen den Zugriff auf den Datenbankport zu erlauben. $ sudo iptables -A INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT $ sudo iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j AKZEPTIEREN $ sudo iptables -A INPUT -p tcp --dport 3306 -j DROP $ sudo iptables -A INPUT -p udp --dport 3306 -j DROP $ sudo iptables -A INPUT -p sctp --dport 3306 -j DROP $ sudo iptables -L -n #Konfiguration speichern $ sudo apt-get install iptables-persistent $ sudo netfilter-persistent speichern #Die Konfiguration wird in den folgenden zwei Dateien gespeichert: /etc/iptables/rules.v4 /etc/iptables/rules.v6. #Es ist am besten, den tatsächlich gespeicherten Inhalt zu bestätigen, insbesondere wenn andere Sicherheitssoftware wie Denyhosts installiert ist. #Überflüssige Regeln können aufgezeichnet worden sein und müssen manuell aus der Firewall-Konfiguration der Bibliothek gelöscht werden# iptables -A OUTPUT -p tcp -d master_ip --dport 3306 -j ACCEPT #Löschen Sie alle vorhandenen Konfigurationen, um mehrere doppelte Datensätze zu vermeiden$ sudo iptables -D OUTPUT -p tcp -d 121.199.27.227 --dport 3306 -j ACCEPT #Konfiguration hinzufügen$ sudo iptables -A OUTPUT -p tcp -d 121.199.27.227 --dport 3306 -j ACCEPT $ sudo iptables -L -n #Konfiguration speichern $ sudo apt-get install iptables-persistent $ sudo netfilter-persistent speichern #Die Konfiguration wird in den folgenden zwei Dateien gespeichert: /etc/iptables/rules.v4 /etc/iptables/rules.v6. #Es ist am besten, den tatsächlich gespeicherten Inhalt zu bestätigen, insbesondere wenn andere Sicherheitssoftware wie Denyhosts installiert ist. #Es können redundante Regeln aufgezeichnet sein, die manuell gelöscht werden müssen Masterdatenbank-Masterkonfiguration 1. Ändern Sie die MySQL-Konfiguration $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf Ändern Sie den Abschnitt [mysqld] wie folgt: [mysqld] log-bin = /var/log/mysql/mysql-bin.log #Binärlog öffnen. Es ist standardmäßig auskommentiert. Wir entfernen die Kommentare. server-id = 1 #Server-ID festlegen bind-address = 0.0.0.0 #Der Standardwert ist 127.0.0.1. Hier setzen wir es auf eine beliebige Adresse, um den Fernzugriff zu ermöglichen. Stellen Sie vorher sicher, dass die Firewall richtig konfiguriert ist, da sonst Sicherheitsrisiken bestehen. 2. Starten Sie MySQL neu und erstellen Sie ein Benutzerkonto für die Synchronisierung Erstellen Sie einen Benutzer und autorisieren Sie: Benutzer: repl Passwort: slavepass $ sudo service mysql neu starten $ mysql -u root -p -e "CREATE USER 'repl'@'182.254.149.39' IDENTIFIED BY 'slavepass';" #Benutzer erstellen$ mysql -u root -p -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'182.254.149.39';" #Berechtigungen zuweisen$ mysql -u root -p -e "flush privileges;" #Berechtigungen aktualisieren 3. Überprüfen Sie den Masterstatus und notieren Sie den Namen der Binärdatei (mysql-bin.000001) und den Speicherort (333802): $ mysql -u root -p -e "MASTER-STATUS ANZEIGEN;" Passwort eingeben: +------------------+----------+--------------+------------------+-------------------+ | Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 333802 | | | | +------------------+----------+--------------+------------------+-------------------+ 4. Sichern Sie die Master-Datenbank, um die Daten für die erste Datensynchronisation der Slave-Datenbank vorzubereiten Verwenden Sie das folgende Skript, um eine Datenbanksicherungsdatei zu generieren #Hier nehmen wir das Backup der WordPress-Datenbank als Beispiel datadump=`which mysqldump` mysqluser="Stamm" userpass="Passwort" wordpressdb="WordPress" Backupwordpress_sql = $wordpressdb.`Datum +%Y%m%d`.sql wenn $datadump -u $mysqluser --password=$userpass -h localhost --opt $wordpressdb > $backupwordpress_sql 2>&1 Dann echo "Sicherung von $wordpressdb erfolgreich" anders echo "Backup $wordpressdb Fehler" Ausfahrt 1 fi #Überprüfen Sie, ob am Ende der Datei „-- Dump completed on“ steht. Wenn es nicht vorhanden ist, bedeutet dies, dass die Sicherung fehlgeschlagen ist. if [ 0 -eq "$(sed '/^$/!h;$!d;g' $backupwordpress_sql | grep -c "Dump abgeschlossen am")" ]; Dann echo "Backup $wordpressdb Fehler" Ausfahrt 1 anders echo "Sicherung von $wordpressdb erfolgreich" fi Führen Sie das Skript aus, um sicherzustellen, dass die endgültige Ausgabesicherung erfolgreich ist $ CD ~ $ sudo bash backup_wordpress.sh Slave-Server-Konfiguration 1. Ändern Sie die MySQL-Konfiguration $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf Ändern Sie die Server-ID. Die Server-IDs jeder Datenbank müssen eindeutig sein und dürfen nicht miteinander in Konflikt stehen. [mysqld] server-id = 2 #Server-ID festlegen, muss eindeutig sein log_bin = /var/log/mysql/mysql-bin.log #Am besten auch das Protokoll öffnen 2. Führen Sie die erste Wiederherstellung der Datenbank durch: $ sudo service mysql neu starten $ scp -P 22 -r [email protected]:~/wordpress.*.sql ./ #Löschen Sie eine mögliche Warnzeile, die uns möglicherweise daran hindert, Daten wiederherzustellen. $ sed -i "/^mysqldump: \[Warnung\] Die Verwendung eines Passworts auf der Befehlszeilenschnittstelle kann unsicher sein\./d" wordpress.*.sql $ mysql -u root -p -e "Datenbank WordPress löschen;" $ mysql -u root -p -e "Datenbank WordPress erstellen;" $ mysql -u root -p wordpress < wordpress.*.sql 3. Starten Sie MySQL neu, öffnen Sie eine MySQL-Sitzung und führen Sie die SQL-Anweisung zur Synchronisierung aus (erfordert den Hostnamen des primären Servers, Anmeldeinformationen sowie den Namen und Speicherort der Binärdatei): $ mysql -u root -p -e "ÄNDERN SIE MASTER AUF MASTER_HOST='121.199.27.227', MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=333802;" 4. Starten Sie den Slave-Synchronisierungsprozess: $ mysql -u root -p -e "Slave starten;" 5. Überprüfen Sie den Slave-Status: $ mysql -u root -p -e "Slave-Status anzeigen\G;" Passwort eingeben: *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 121.199.27.227 Master_Benutzer: repl Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File:mysql-bin.000001 Read_Master_Log_Pos: 9448236 Relay_Log_File: VM-114-251-ubuntu-relay-bin.000002 Relay_Log_Pos: 17780 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Ja Slave_SQL_Running: Nein Replicate_Do_DB: Replikat_Ignorieren_DB: Tabelle_replizieren: Tabelle_Ignorieren_replizieren: Wild_Do_Tabelle replizieren: Tabelle_Wild_Ignore_replizieren: ... Wenn Slave_IO_Running und Slave_SQL_Running beide JA sind, bedeutet dies, dass die Master-Slave-Synchronisierungseinstellung erfolgreich war. Als Nächstes können Sie einige Überprüfungen durchführen. Fügen Sie beispielsweise ein Datenelement in eine Tabelle in der Testdatenbank der Masterdatenbank ein und prüfen Sie, ob in derselben Datentabelle der Testdatenbank des Slaves neue Daten vorhanden sind, um zu überprüfen, ob die Master-Slave-Replikationsfunktion wirksam ist. Sie können den Slave auch herunterfahren (mysql>stop slave;) und dann den Master ändern, um zu sehen, ob der Slave ebenfalls entsprechend geändert wurde (nach dem Stoppen des Slaves werden die Änderungen des Masters nicht mit dem Slave synchronisiert), und die Master-Slave-Replikationsfunktion kann überprüft werden. Andere verwandte Parameter, die ebenfalls verwendet werden können: Nachdem der Master das Binärprotokoll geöffnet hat, werden standardmäßig Operationen an allen Tabellen in allen Bibliotheken aufgezeichnet. Sie können es so konfigurieren, dass nur Operationen an einer bestimmten Datenbank oder sogar einer bestimmten Tabelle aufgezeichnet werden. Insbesondere können Sie die folgenden Optionen im Abschnitt [mysqld] der MySQL-Konfigurationsdatei hinzufügen und ändern: # Welche Datenbanken werden nicht synchronisiert? binlog-ignore-db = mysql binlog-ignorieren-db = Test binlog-ignore-db = Informationsschema # Nur bestimmte Datenbanken synchronisieren, außer diesen keine anderen Datenbanken synchronisieren binlog-do-db = game Wenn Sie beispielsweise zuvor den Masterstatus überprüfen, können Sie sehen, dass nur die Testbibliothek aufgezeichnet ist und das Handbuch und die MySQL-Bibliotheken ignoriert werden. Zusammenfassen Oben ist die vom Herausgeber eingeführte Konfigurationsmethode für die MySQL-Master-Slave-Synchronisierung in Ubuntu 16.04. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: So ändern Sie das Terminal in Ubuntu 18 in eine schöne Eingabeaufforderung
>>: Docker- und Portainer-Konfigurationsmethoden unter Linux
Installation und Konfiguration von MySQL im ZIP-F...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 0x0 Einführung 0x1 RBAC-Implem...
Dieser Artikel beschreibt, wie man eine MySQL Mas...
HTML besteht aus zwei Teilen: Kopf und Text ** Da...
Dieser Artikel zeichnet das grafische Tutorial zu...
1. Gehen Sie zur offiziellen Website: D:\mysql-5....
In diesem Artikel wird hauptsächlich die wunderba...
1. Öffnen Sie die virtuelle CentOS 7-Maschine. 2....
Inhaltsverzeichnis JVM-Klassenlader Tomcat-Klasse...
Verwenden Sie den Parameter --all-database , wenn...
Wenn Menschen zu lange untätig waren, denken sie,...
1. Zuerst wird beim Verknüpfen von Git eine Fehle...
In diesem Artikel wird der spezifische Code von V...
Es gibt zwei Möglichkeiten, schreibgeschützte Eing...