MySQL-Vollsicherung 1. Aktivieren Sie das Binärprotokoll, trennen Sie es von der Datenbank und speichern Sie es separat vim /etc/meine.cnf Hinzufügen zu log_bin=/data/bin/mysql-bin Erstellen Sie den Ordner /data/bin und autorisieren Sie ihn chown mysql.mysql /data/bin 2. Vervollständigen Sie die Sicherungsdatenbank mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 3. Datenbank hinzufügen, löschen und ändern INSERT hellodb.students(Student,Name,Geschlecht,Alter) VALUE(27,'Lujunyi','M',30); 4. MySQL stoppen systemctl stop mariadb.service 5. Entpacken Sie die Sicherungsdatei unxz /data/all.sql.xz 6. Suchen Sie den Speicherort des Binärprotokolls während der vollständigen Sicherung vim /data/all.sql HANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=468 7. Exportieren Sie das Binärprotokoll, nachdem die Sicherung abgeschlossen ist mysqlbinlog --start-position=468 /data/bin/mysql-bin.000001 > /data/inc.sql 8. Daten wiederherstellen mysql -e 'Quelle /data/all.sql' mysql -e 'Quelle /data/inc.sql' 9. Überprüfung abgeschlossen. Wiederherstellung nach versehentlichem Löschen 1. Binärprotokoll aktivieren und getrennt von der Datenbank speichern vim /etc/meine.cnf Hinzufügen zu log_bin=/data/bin/mysql-bin Erstellen Sie den Ordner /data/bin und autorisieren Sie ihn chown mysql.mysql /data/bin 2. Führen Sie eine vollständige Sicherung der Datenbank durch mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 3. Datenbank hinzufügen, löschen und ändern mysql -e "Tabelle hellodb.students löschen" mysql -e "füge hellodb.teachers-Wert ein (5,'wangqi',50,'M')" 4. Beenden Sie den Dienst systemctl stop mariadb.service 5. Löschen Sie die Datenbank rm -rf /var/lib/mysql/* 6. Entpacken Sie die Sicherungsdatei unxz /data/all.sql.xz 7. Sehen Sie sich die Sicherungsdatei an und suchen Sie den Binärknoten vim /data/all.sql -- ÄNDERN SIE MASTER IN MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=521902; 8. Exportieren Sie die binären Protokollknotendaten mysqlbinlog --start-position=521902 /data/bin/mysql-bin.000004 >/data/inc.sql 9. Löschen Sie den Befehl, der den Fehler in den Binärprotokollknotendaten verursacht hat vim /data/inc.sql DROP TABLE `hellodb`.`students` /* vom Server generiert */ 10. Starten Sie den Dienst systemctl starte mariadb.service 11. Binäres Logging deaktivieren mysql -e "SET sql_log_bin=off" 12. Backup-Daten importieren mysql </data/all.sql mysql </data/inc.sql 13.Überprüfung abgeschlossen. Master-Slave-Replikation # Primärer Server 1. Aktivieren Sie das Binär-Logging auf dem Master-Server und ändern Sie das Binärverzeichnis vim /etc/meine.cnf log_bin=/data/bin/mysql-bin binlog-format=Zeile Server-ID=1 (Master- und Slave-Server müssen unterschiedlich sein) Verzeichnis wie oben ändern 2. Starten Sie den Dienst neu Dienst MySQL Neustart 3. Erstellen Sie ein Konto, um Daten zu kopieren mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIZIERT DURCH "centos" 4. Sehen Sie sich das vom Masterserver verwendete Binärprotokoll an Master-Protokolle anzeigen; +------------------+------------+ | Protokollname | Dateigröße | +------------------+------------+ |mysql-bin.000001 | 14383 | +------------------+------------+ 1 Zeile im Satz (0,00 Sek.) # Vom Server 5. Weitere Konfiguration vim /etc/meine.cnf Server-ID = 2 schreibgeschützt #log-bin=/data/bin/mysql-bin 6. Starten Sie den Dienst Dienst MySQL Neustart 7. Den Hauptdienst zuordnen MariaDB [(keine)]> ÄNDERN SIE MASTER IN MASTER_HOST='172.22.7.70', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14383; 8. Überprüfen Sie den Status des Slave-Servers Slave-Status anzeigen\G; 9. Starten Sie den Thread Slave starten; #prüfen 10. Fügen Sie Daten auf dem Master-Server hinzu, löschen und ändern Sie sie und prüfen Sie, ob die Daten auf dem Slave-Server synchronisiert sind. Lösung für Master-Slave-Replikationsfehler - sql_slave_skip_counter #Master-Dienst-IP=172.22.7.70 1. Aktivieren Sie das Binär-Logging auf dem Master-Server und ändern Sie das Binärverzeichnis vim /etc/meine.cnf log_bin=/data/bin/mysql-bin binlog-format=Zeile Server-ID=1 (Master- und Slave-Server müssen unterschiedlich sein) Verzeichnis wie oben ändern 2. Starten Sie den Dienst neu Dienst MySQL Neustart 3. Erstellen Sie ein Konto, um Daten zu kopieren mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIZIERT DURCH "centos" 4. Sehen Sie sich das vom Masterserver verwendete Binärprotokoll an mysql -e 'Master-Protokolle anzeigen;' +------------------+------------+ | Protokollname | Dateigröße | +------------------+------------+ |mysql-bin.000001 | 264 | |mysql-bin.000002 | 245 | +------------------+------------+ #Slave-Dienst-IP=172.22.7.71 5. Ändern Sie die Konfigurationsdatei und starten Sie den Dienst vim /etc/meine.cnf [mysqld] Server-ID = 2 schreibgeschützt systemctl starte mariadb #Konfigurationsfehler Master-Dienstinformationen 6. Konfiguration, ändern Sie Master auf ÄNDERN SIE MASTER IN MASTER_HOST='172.22.7.77', MASTER_USER='wang', MASTER_PASSWORD='lodman', MASTER_PORT=3306, MASTER_LOG_FILE=log-bin.001', MASTER_LOG_POS=4, MASTER_CONNECT_RETRY=10; 7. Überprüfen Sie den Slave-Status mysql -e 'Slave-Status anzeigen\G' Slave_IO_State: Master_Host: 172.22.7.77 Master_Benutzer: wang Master_Port: 3306 Verbindungswiederholung: 10 Master_Log_File: log-bin.001 Read_Master_Log_Pos: 4 Relay_Log_Datei: ct7m1-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: log-bin.001 Slave_IO_Running: Nein Slave_SQL_Running: Nein ·········leicht 8. Starten Sie den Kopier-Thread mysql -e 'Slave starten' 9. Überprüfen Sie den Slave-Status erneut mysql -e 'Slave-Status anzeigen\G' Slave_IO_State: Master_Host: 172.22.7.77 Master_Benutzer: wang Master_Port: 3306 Verbindungswiederholung: 10 Master_Log_File: log-bin.001 Read_Master_Log_Pos: 4 Relay_Log_Datei: ct7m1-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: log-bin.001 Slave_IO_Running: Verbindung wird hergestellt Slave_SQL_Running: Ja ·········leicht 10.Master-Dienst fügt Daten hinzu, löscht und ändert sie 11. Überprüfen Sie, ob der Slave-Dienst synchronisiert ist. Fehlgeschlagen! #Lösen Sie den Fehler 12. Stoppen und setzen Sie den Slave-Replikationsthread-Dienst zurück mysql -e 'Slave stoppen' mysql -e 'Slave zurücksetzen' 13. Konfigurieren Sie den richtigen Änderungsmaster für Informationen ÄNDERN SIE MASTER IN MASTER_HOST='172.22.7.70', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=245; 14. Überprüfen Sie den Slave-Status Slave-Status anzeigen\G; Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 172.22.7.70 Master_Benutzer: repluser Master_Port: 3306 Verbindungswiederholung: 10 Master_Log_File:mysql-bin.000002 Read_Master_Log_Pos: 7382 Relay_Log_Datei: ct7m1-relay-bin.000002 Relay_Log_Pos: 540 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Ja Slave_SQL_Running: Nein 15. Im Slave-Status wurde Slave_SQL_Running: No gefunden. Führen Sie den folgenden Befehl aus, um es in YES zu ändern. MariaDB [(keine)]> Slave stoppen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MariaDB [(keine)]> setze GLOBAL SQL_SLAVE_SKIP_COUNTER=1; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MariaDB [(keine)]> Slave starten; Abfrage OK, 0 Zeilen betroffen (0,03 Sek.) MariaDB [(keine)]> Slave-Status anzeigen\G; *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 172.22.7.70 Master_Benutzer: repluser Master_Port: 3306 Verbindungswiederholung: 10 Master_Log_File:mysql-bin.000002 Read_Master_Log_Pos: 7382 Relay_Log_Datei: ct7m1-relay-bin.000003 Relay_Log_Pos: 540 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Ja Slave_SQL_Running: Ja ·········leicht 16. Überprüfen Sie, ob die Slave-Dienstdaten synchronisiert sind 17. Synchronisierung abgeschlossen. Kaskadierende MySQL-Replikation In der Produktion gibt es eine Master-Slave-Replikationsmethode, bei der der Masterknoten zuerst die Daten mit einem Zwischen-Slaveknoten synchronisiert und der Slaveknoten dann die Daten auf nachfolgende Slaveknoten kopiert. Diese Replikationsmethode wird als kaskadierende Replikation bezeichnet. Der Vorteil der kaskadierenden Replikation besteht darin, dass sie den Druck auf den primären Knoten erheblich reduzieren kann. Für die kaskadierende Replikation muss bei der Konfiguration die Option log_slave_updates auf den Zwischenknoten aktiviert werden. #Umgebung Server Master Slave Slave System Centos7 Centos7 Centos7 IP 172.22.7.70 172.22.7.70 172.22.7.71 #Matte 1. Aktivieren Sie das Binär-Logging auf dem Master-Server und ändern Sie das Binärverzeichnis vim /etc/meine.cnf log_bin=/data/bin/mysql-bin binlog-format=Zeile Server-ID=1 (Master- und Slave-Server müssen unterschiedlich sein) Verzeichnis wie oben ändern 2. Starten Sie den Dienst neu Dienst MySQL Neustart 3. Erstellen Sie ein Konto, um Daten zu kopieren mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIZIERT DURCH "centos" 4. Sehen Sie sich das vom Masterserver verwendete Binärprotokoll an mysql -e 'Master-Protokolle anzeigen;' +------------------+------------+ | Protokollname | Dateigröße | +------------------+------------+ |mysql-bin.000001 | 264 | |mysql-bin.000002 | 7488 | | mysql-bin.000003 | 402 | +------------------+------------+ #Sklave 5. Ändern Sie die Konfigurationsdatei und erstellen Sie ein Binärprotokollverzeichnis vim /etc/meine.cnf [mysqld] log-bin=/data/bin/mysql-bin binlog-format=Zeile schreibgeschützt log_slave_updates Server-ID = 2 Verzeichnis wechseln siehe oben 6. Starten Sie den Dienst systemctl Neustart MariaDB 7. Konfigurieren Sie den Änderungsmaster auf Informationen ÄNDERN SIE MASTER IN MASTER_HOST='172.22.7.70',MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=402; 8. Starten Sie den Slave-Thread mysql -e 'Slave starten' 9. Überprüfen Sie den Slave-Status Slave-Status anzeigen\G; *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 172.22.7.70 Master_Benutzer: repluser Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 7539 Relay_Log_Datei: ct7m1-relay-bin.000002 Relay_Log_Pos: 7677 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Ja Slave_SQL_Running: Ja Replicate_Do_DB: 10. Hinzufügen, Löschen und Ändern von Daten auf dem Master zum Testen und Anzeigen #Sklave1 11. Kopieren Sie die Daten vom Slave auf den Slave mysqldump -A --single-transaction -F --master-data=1 > /data/all.sql scp /data/all.sql 172.22.7.72:/data 12. Slave erstellt ein Konto zum Kopieren von Daten mysql -e 'GRANT REPLICATION SLAVE ON *.* TO "repluser"@"172.22.7.%" IDENTIFIZIERT DURCH "centos" 13. Ändern Sie die Slave1-Konfiguration vim /etc/meine.cnf [mysqld] schreibgeschützt Server-ID = 3 14. Starten Sie den Dienst systemctl starte mariadb 15. Zeigen Sie das Binärprotokoll des Slave-Servers an mysql -e 'Master-Protokolle anzeigen' +------------------+------------+ | Protokollname | Dateigröße | +------------------+------------+ |mysql-bin.000001 | 351 | |mysql-bin.000002 | 351 | |mysql-bin.000003 | 351 | |mysql-bin.000004 | 25552 | |mysql-bin.000005 | 586 | +------------------+------------+ 16. Öffnen Sie die Datei all.sql und ändern Sie den Änderungsmaster in Informationen ÄNDERN SIE MASTER IN MASTER_HOST='172.22.7.71',MASTER_USER='repluser',MASTER _PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=586; 17. Slave-Daten importieren mysql < /data/all.sql 18. Starten Sie den Thread mysql -e "SLAVE STARTEN;" 19. Überprüfen Sie den Slave-Status mysql -e "Slave-Status anzeigen\G;" 20. Fügen Sie das Masterobjekt hinzu, löschen und ändern Sie es, um zu überprüfen, ob es synchronisiert ist 21. Synchronisierung abgeschlossen. MySQL halbsynchron Asynchrone Replikation bedeutet, dass beim Schreiben eines Datensatzes durch einen Benutzer die Daten zuerst auf den Masterknoten geschrieben werden, dann eine erfolgreiche Schreibmeldung an den Benutzer gesendet wird und die Daten dann langsam auf andere Slaveknoten dahinter kopiert werden. Der Vorteil davon ist, dass die Effizienz relativ hoch ist, aber der Nachteil ist auch sehr offensichtlich. Die Verzögerung zwischen dem Masterserver und dem Slaveserver ist zu groß und der Masterserver fällt plötzlich aus, was zu Datenverlust führt. Synchrone Replikation bedeutet, dass, wenn ein Benutzer einen Datensatz schreibt, der Masterknoten die Daten in die Datenbank schreibt und sie dann auf andere Slaveknoten dahinter kopiert. Wenn alle Slaveknoten eine Meldung zurückgeben, dass die Daten erfolgreich kopiert wurden, antwortet der Masterknoten dem Benutzer, dass auf die Daten erfolgreich zugegriffen wurde. Dies hat den Vorteil, dass die Datensicherheit gewährleistet ist, allerdings auf Kosten der Effizienz. Die halbsynchrone Replikation ist eine Replikationsmethode zwischen synchroner und asynchroner Replikation. Ihr Funktionsprinzip ist: Wenn der Benutzer einen Schreibvorgang ausführt, sendet der Masterknoten die Daten an andere Slaveknoten dahinter. Solange ein Slaveknoten eine Nachricht über eine erfolgreiche Replikation zurückgibt, gibt der Masterknoten direkt einen erfolgreichen Schreibvorgang zurück. Wenn der Slaveknoten hinter dem Masterknoten keine Nachricht über eine erfolgreiche Replikation zurückgibt, tritt eine Zeitüberschreitung ein. Sobald die Zeitüberschreitung erreicht ist, gibt der Masterknoten zunächst eine Nachricht zurück, um dem Benutzer mitzuteilen, dass die Replikation erfolgreich war, und fährt dann mit der Replikation der Daten an den Slaveknoten fort. #Konfigurieren Sie die Master-Slave-Replikation. Die Schritte finden Sie oben. #Halbsynchronisierung konfigurieren ##Master 1. Ändern Sie die Konfigurationsdatei, um das Plug-In zu aktivieren vim /etc/meine.cnf [mysqld] log-bin=/data/bin/mariadb-bin binlog-format=Zeile Server-ID = 1 rpl_semi_sync_master_aktiviert 2. Starten Sie den Dienst neu. systemctl Neustart MariaDB 3. Prüfen Sie, ob das Plug-In gestartet ist GLOBALE VARIABLEN WIE „%semi%“ ANZEIGEN; +------------------------------------+--------+ | Variablenname | Wert | +------------------------------------+--------+ | rpl_semi_sync_master_enabled | EIN | | rpl_semi_sync_master_timeout | 3000 | | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_no_slave | EIN | +------------------------------------+--------+ 4 Zeilen im Satz (0,00 Sek.) 4. Legen Sie die Timeout-Periode fest GLOBAL festlegen rpl_semi_sync_master_timeout=3000; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) ##Sklave 5. Ändern Sie die Konfigurationsdatei, um das Plug-In zu aktivieren vim /etc/meine.cnf [mysqld] log-bin=/data/bin/mariadb-bin binlog-format=Zeile Server-ID = 2 rpl_semi_sync_master_aktiviert 6. Starten Sie den Dienst neu. systemctl Neustart MariaDB 7. Prüfen Sie, ob das Plug-In gestartet ist GLOBALE VARIABLEN WIE „%semi%“ ANZEIGEN; +------------------------------------+--------------+ | Variablenname | Wert | +------------------------------------+--------------+ | rpl_semi_sync_master_enabled | EIN | | rpl_semi_sync_master_timeout | 1000 | | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_no_slave | EIN | | rpl_semi_sync_master_wait_point | AFTER_COMMIT | +------------------------------------+--------------+ 5 Zeilen im Satz (0,00 Sek.) 8. Starten Sie den Kopier-Thread mysql -e "SLAVE STARTEN"; 9. Prüfung und Inspektion 10. Synchronisation abgeschlossen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Schritte zur Implementierung der Excel-Importfunktion in Vue
>>: Detailliertes Tutorial zur Installation von Centos8 auf VMware
Bei der tatsächlichen Arbeit oder bei Interviews ...
Durch die Verwendung des prozentualen Padding-Top...
<iframe src=”test.jsp” Breite=”100″ Höhe=”50″ ...
Inhaltsverzeichnis 1. Open-Source-Lagerverwaltung...
Inhaltsverzeichnis 01 Problembeschreibung 02 Lösu...
In diesem Artikelbeispiel wird der spezifische Co...
1. Erstellen Sie ein Docker-Netzwerk Docker-Netzw...
Lassen Sie uns zunächst verstehen, was MySQL ist....
Datensortierung aufsteigend, absteigend 1. Sortie...
1. Wie installiert man? 1. [Ausführen] -> [cmd...
Docker ist eine Open-Source-Container-Engine, mit...
Vorwort Jeder weiß, dass viele Websites mittlerwe...
Überblick Backup ist die Grundlage der Notfallwie...
In diesem Artikel wird das grafische Tutorial zur...
Vorwort Crond ist ein Tool zur geplanten Ausführu...