Heim >Datenbank >MySQL-Tutorial >Was soll ich tun, wenn zwei MySQL-Master und -Slaves synchronisiert sind?
MySQL hat zwei Master und Slaves, das heißt Master-Server und Slave-Server. Die Struktur hat einen Master und einen Slave: einen Master und einen Slave. Ein Master und mehrere Slaves: ein Master und mehrere Slaves.
Empfohlene Kurse: MySQL-Tutorial
Master-Slave-Synchronisationslösung
Zuerst Gehen Sie zur Master-Bibliothek:
mysql>show processlist; 查看下进程是否Sleep太多。发现很正常。 show master status; 也正常。 mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+-------------------------------+ | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | +-------------------+----------+--------------+-------------------------------+ 1 row in set (0.00 sec)
Überprüfen Sie dann den Slave
mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: No
Es ist ersichtlich, dass der Slave nicht synchron ist
Zwei Lösungen werden unten vorgestellt :
Methode 1: Fehler ignorieren und Synchronisierung fortsetzen
Diese Methode eignet sich für Situationen, in denen die Daten in der Master-Slave-Datenbank nicht sehr unterschiedlich sind , oder die Daten müssen nicht vollständig vereinheitlicht werden und die Datenanforderungen sind nicht strenge Situation
Lösung:
stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; 之后再用mysql> show slave status\G 查看: Slave_IO_Running: Yes Slave_SQL_Running: Yes ok,现在主从同步状态正常了。。。
Methode 2: Master-Slave erneut durchführen, vollständige Synchronisierung
Diese Methode eignet sich für Master-Slave-Datenbankdaten. Der Unterschied ist groß oder die Daten müssen vollständig vereinheitlicht werden
Die Lösungsschritte lauten wie folgt:
1. Geben Sie zunächst die Hauptdatenbank ein und sperren Sie die Tabelle, um das Schreiben von Daten zu verhindern.
Verwenden Sie den Befehl:
mysql> flush tables with read lock;
Hinweis: Dieser Bereich ist schreibgeschützt Zustand, und die Anweisungen unterscheiden nicht zwischen Groß- und Kleinschreibung
2. Sichern Sie die Daten
# Sichern Sie die Daten in der mysql.bak-Datei
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
Hinweis hier: Die Datenbanksicherung muss regelmäßig durchgeführt werden. Sie können ein Shell-Skript oder ein Python-Skript verwenden, um sicherzustellen, dass die Daten narrensicher sind.
rrree>4 MySQL-Sicherungsdatei auf dem Slave-Computer zur Datenwiederherstellung #Verwenden Sie den scp-Befehlmysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+-------------------------------+ | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | +-------------------+----------+--------------+-------------------------------+ 1 row in set (0.00 sec)5. Stoppen Sie den Status des Slaves
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/6. Führen Sie dann den MySQL-Befehl aus in der Slave-Bibliothek und importieren Sie die Datensicherung
rrree
. Achten Sie auf den Synchronisationspunkt, der sich in der Datei „Master“ befindet der Master-Bibliothekmysql> stop slave;8. Slave-Synchronisation neu starten
mysql> source /tmp/mysql.bak.sql9. Synchronisationsstatus prüfen
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn zwei MySQL-Master und -Slaves synchronisiert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!