1. Datenbank-Master-Slave-Klassifizierung:Es gibt zwei Arten von Master-Slave: traditioneller Master-Slave/GTID Master-Slave 2. Ursprung der MySQL-Master-Slave-Einführung Im wirklichen Leben sind Daten äußerst wichtig. Es gibt viele Möglichkeiten, Datenbanken zu speichern, aber in Datenbanken steckt eine versteckte Gefahr. Wenn Sie eine Datenbank zum Speichern von Daten verwenden und der Datenbankserver abstürzt, gehen Daten verloren. Wenn zu viele Daten vorhanden sind und die Anzahl der Besuche groß ist, kann ein Server die Servicequalität nicht garantieren. Daher wurde die Master-Slave-Datenbank geboren 3. Master-Slave-FunktionFailover, Realisierung einer Lese-/Schreibtrennung, Bereitstellung einer Sicherung des Datenbankverwaltungssystems (DBSM) für Abfragedienste, Vermeidung von Geschäftsbeeinträchtigungen 4. Master-Slave-Replikationsprinzip
5. Master-Slave-Replikationskonfiguration (bei konsistenten Daten)Schritt:
Umweltanforderungen: Zwei MySQL-Server, ein Master-Server (Schreibfunktion) und ein Slave-Server (Lesefunktion) Hauptdatenbank (centos8) IP-Adresse: 192.168.136.145 centos8.0/mysql5.7 Gleiche Daten 5.1 Installieren Sie mysql5.7 jeweils auf dem Master- und Slave-ServerDas entsprechende Tutorial (super ausführlich) könnt ihr euch hier ansehen: https://www.jb51.net/article/221946.htm #Binärinstallation: https://blog.csdn.net/qq_47945825/article/details/116848970?spm=1001.2014.3001.5501 #Oder aus einem Netzwerk-Repository installieren: (im Allgemeinen binäre Installation) https://blog.csdn.net/qq_47945825/article/details/116245442?spm=1001.2014.3001.5501 5.2 Die Daten der Master-Datenbank stimmen mit denen der Slave-Datenbank überein[root@mysql01 ~]# mysql -uroot -e 'Datenbanken anzeigen;' +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | |System| +--------------------+ [root@mysql02 ~]# mysql -uroot -e 'Datenbanken anzeigen;' +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | |System| +--------------------+ 5.3 Erstellen Sie ein Synchronisierungskonto in der Masterdatenbank und autorisieren Sie es für die Verwendung durch die Slavedatenbank
mysql> Benutzer ‚vvv‘@‚192.168.136.191‘ erstellen, identifiziert durch ‚vvv0917‘; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> gewähre Replikations-Slave auf *.* an 'vvv'@'192.168.136.191'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) 5.4 Testen der Verbindung am Slave[root@mysql02 ~]# mysql -uvvv -vvv0917 -h192.168.136.145 mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | +--------------------+ 1 Zeile im Satz (0,00 Sek.) 5.5 Konfigurieren der Masterdatenbank[root@mysql01 ~]# cat /etc/my.cnf [mysqld] basedir = /usr/local/mysql Datenverzeichnis = /opt/data Socket = /tmp/mysql.sock Port = 3306 pid-Datei = /opt/data/mysql.pid Benutzer = MySQL Namensauflösung überspringen log-bin=mysql_bin #Starte binlog log server-id=10 #Eindeutige Kennung des Datenbankservers, die ID muss kleiner sein als die der Slave-Datenbank #Starte den Dienst neu (für diese Neustartmethode muss die Datei mysqld.service konfiguriert sein) [root@mysql01 ~]# systemctl starte mysqld neu Beobachten Sie den Status der primären Datenbank: mysql> Masterstatus anzeigen; +------------------+----------+--------------+------------------+-------------------+ | Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql_bin.000004 | 962 | | | | +------------------+----------+--------------+------------------+--- 5.6 Konfigurieren der Slave-Datenbank[root@mysql02 ~]# cat /etc/my.cnf [mysqld] basedir = /usr/local/mysql Datenverzeichnis = /opt/data Socket = /tmp/mysql.sock Port = 3307 Benutzer = MySQL pid-Datei = /opt/data/mysql.pid Namensauflösung überspringen #Grant-Tabellen überspringen server-id=20 #Server-ID, größer als die primäre Datenbank-ID relay-log=mysql_relay_log #Relay-Protokoll starten #log-bin=mysql-bin #Starten Sie den Dienst neu: [root@mysql02 ~]# systemctl starte mysqld neu 5.7 Konfigurieren und Starten der Master-Slave-Replikationsfunktion (mysql02-Slave-Datenbank)[root@slave02 ~]# mysql -uroot -p mysql> ändere Master in -> master_host='192.168.136.145', -> master_user='vvv', -> Master-Passwort = 'vvv0917', -> master_log_file='mysql_bin.000004', -> master_log_pos=962; Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,01 Sek.) mysql> starte Slave; #stop Slave zum Herunterfahren. Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) #Konfigurationsstatus anzeigen: mysql> Slave-Status anzeigen\G; Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 192.168.136.145 Master_Benutzer: vvv Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File: mysql_bin.000004 Read_Master_Log_Pos: 962 Relay-Log-Datei: mysql_relay_log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql_bin.000004 Slave_IO_Running: Ja Slave_SQL_Running: Ja #Hier muss beides auf „ja“ stehen, damit die Konfiguration erfolgreich ist, andernfalls schlägt sie fehl 5.8 Prüfung:Hauptbibliothek:mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | |System| +--------------------+ Aus der Bibliothek:mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | |System| +--------------------+ Die Hauptbibliothek erstellt die Datenbank clq und fügt Daten hinzu:mysql> Datenbank clq erstellen; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> Tabelle erstellen clq01(id int(11)nicht null Primärschlüssel auto_increment,Name varchar(100)nicht null,Alter tinyint(4)); mysql> füge clq01(Name, Alter) Werte('A',20),('B',21),('C',22) ein; Abfrage OK, 3 Zeilen betroffen (0,00 Sek.) Blick aus der Galerie:mysql> wähle * aus clq01; +----+------+------+s | ID | Name | Alter | +----+------+------s+ | 1 | EIN | 20 | | 2 | B | 21 | | 3 | C | 22 | +----+------+------+ #Master-Slave-Replikation abgeschlossen! 6. Master-Slave-Konfiguration (bei inkonsistenten Daten)6.1 Im Allgemeinen muss für eine vollständig gesicherte Masterdatenbank ein weiteres Terminal geöffnet werden, um der Datenbank eine Lesesperre hinzuzufügen (nur Lesen, nicht Schreiben). Vermeiden Sie Unterschiede, die durch das Schreiben von Daten durch andere entstehen Tabellen mit Lesesperre leeren: beenden: Beenden zum Entsperren (Entsperren nach Abschluss der Sicherung) 6.2 Stellen Sie sicher, dass die Daten in der Master-Datenbank mit denen in der Slave-Datenbank identisch sind#Bereiten Sie zuerst die Hauptdatenbank vor [root@mysql01 ~]# mysqldump -uroot -A > all-databases.sql #Daten in die Slave-Datenbank kopieren [root@mysql01 ~]# ls /clq alle-datenbanken.sql [root@mysql01 ~]# scp /clq/all-databases.sql [email protected]:/clq/ Die Authentizität des Hosts „192.168.136.193 (192.168.136.193)“ kann nicht festgestellt werden. Der ECDSA-Schlüsselfingerabdruck ist SHA256:XIAQEoJ+M0vOHmCwQvhUdw12u5s2nvkN0A4TMKLaFiY. Möchten Sie die Verbindung wirklich fortsetzen (ja/nein/[Fingerabdruck])ja Passwort von [email protected]: all-databases.sql 100 % 853 KB 115,4 MB/s 00:00 [root@mysql02 clq]# ll Gesamtnutzung 896 #Ansicht aus der Datenbank -rw-r--r--. 1 root root 873266 17. Mai 19:36 all-databases.sql 6.3 Überprüfen Sie, welche Bibliotheken sich in der Master-Bibliothek auf der Slave-Bibliothek befinden, um die Konsistenz sicherzustellen[root@mysql02 clq]# mysql -uroot -pHuawei0917@ < alle-datenbanken.sql mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein. [root@mysql02 clq]# mysql -uroot -pHuawei0917@ -e 'Datenbanken anzeigen;' mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein. +--------------------+ | Datenbank | +--------------------+ | Informationsschema | | |mysql | | Leistungsschema | |System| +--------------------+ Hauptbibliothek: mysql> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | | |mysql | | Leistungsschema | |System| +--------------------+ 6.4 Stellen Sie sicher, dass die Konfigurationsdateien der beiden Bibliotheken mit den entsprechenden Dateien konfiguriert wurden[root@mysql01 ~]# cat /etc/my.cnf [mysqld] basedir = /usr/local/mysql Datenverzeichnis = /opt/data Socket = /tmp/mysql.sock Port = 3306 pid-Datei = /opt/data/mysql.pid Benutzer = MySQL Namensauflösung überspringen log-bin=mysql_bin #Protokolldatei server-id=10 #eindeutige Kennung der Service-ID [root@mysql02 ~]# cat /etc/my.cnf [mysqld] basedir = /usr/local/mysql Datenverzeichnis = /opt/data Socket = /tmp/mysql.sock Port = 3307 Benutzer = MySQL pid-Datei = /opt/data/mysql.pid Namensauflösung überspringen #Grant-Tabellen überspringen server-id=20 #Identifiziert eindeutig die Service-ID (größer als die Hauptdatenbank) relay-log=mysql_relay_log #Relay-Protokoll#log-bin=mysql-bin Die Schritte danach sind genau die gleichen wie nach 5.5! Zusammenfassung: Wenn die Masterdatenbank die Daten ändert, ändern sich die Daten der Slavedatenbank entsprechend! Zeigen Sie den in der Datenbank ausgeführten Befehlsprozess an mysql> Prozessliste anzeigen; +----+------+----------------------+---------+-------------+------+-----------------------------------------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+------+----------------------+---------+-------------+------+-----------------------------------------------------------+------------------+ | 5 | repl | 192.168.136.219:39788 | NULL | Binlog-Dump | 1575 | Der Master hat das gesamte Binlog an den Slave gesendet; warte auf weitere Aktualisierungen | NULL | | 7 | root | localhost | NULL | Abfrage | 0 | wird gestartet | Prozessliste anzeigen | +----+------+----------------------+---------+-------------+------+-----------------------------------------------------------+------------------+ 2 Zeilen im Satz (0,00 Sek.) Oben finden Sie eine detaillierte Analyse des Prinzips und der Funktion der Master-Slave-Replikation von MySQL-Datenbanken. Weitere Informationen zur Master-Slave-Replikation von MySQL-Datenbanken finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Implementierungsbeispiel zum Schließen der Browserabmeldung in Vue
>>: Detailliertes Beispiel zur Installation eines FastDfs-Dateiservers mit Docker Compose
Inhaltsverzeichnis Redo-Protokoll Warum müssen wi...
Das Installationstutorial der komprimierten Versi...
Vorbemerkungen 1.Unterschiede zwischen Vue2.x und...
In diesem Artikel finden Sie das Installations- u...
Als ich kürzlich CSS studierte, stellte ich fest,...
Informationen finden Einige im Internet gefundene...
Funktion 0. Aktuelle Uhrzeit anzeigen Befehl: sel...
Inhaltsverzeichnis Vorwort Referenzvergleich Manu...
Durchscheinender Rand Ergebnis: Implementierungsc...
Parameter im Zusammenhang mit dem langsamen Abfra...
Dieser Artikel untersucht die ES6-for...of-Schlei...
Inhaltsverzeichnis 1. Teilzeichenfolge () 2. subs...
Inhaltsverzeichnis Vorwort iframe implementiert S...
Schauen Sie sich zuerst den Code an #/bin/sh Datu...
Hallo zusammen, ich bin Liang Xu. Wie wir alle wi...