Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn zwei MySQL-Master und -Slaves synchronisiert sind?

Was soll ich tun, wenn zwei MySQL-Master und -Slaves synchronisiert sind?

(*-*)浩
(*-*)浩Original
2019-05-10 11:10:563491Durchsuche

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

Was soll ich tun, wenn zwei MySQL-Master und -Slaves synchronisiert sind?

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-Befehl

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)
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-Bibliothek

mysql> stop slave;
8. Slave-Synchronisation neu starten

mysql> source /tmp/mysql.bak.sql
9. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn