Implementierungsschritte der MySQL-Master-Slave-Replikation

Implementierungsschritte der MySQL-Master-Slave-Replikation

MySQL Master-Slave-Replikation

Ich habe ursprünglich am Sharding gearbeitet, aber nachdem ich damit fertig war, stellte ich fest, dass die Master-Slave-Replikation der Datenbank nicht durchgeführt worden war. Daher habe ich nach der Konfiguration einige Aufzeichnungen gemacht:

MySQL Master-Slave-Replikationsmethode

Es gibt zwei Möglichkeiten der MySQL-Master-Slave-Replikation: protokollbasiert (binlog) und GTID-basiert (Global Transaction Identifier). Dieser Blogbeitrag verwendet die protokollbasierte (binlog) Replikation.

Das Prinzip der MySQL-Master-Slave-Replikation

1. Der Master zeichnet Daten im Binärprotokoll auf. Dies ist die Datei, die in der MySQL-Konfigurationsdatei my.cnf durch log-bin angegeben wird. Diese Aufzeichnungen werden als Binärprotokollereignisse bezeichnet.
2. Der Slave hat zwei Threads, einen I/O-Thread und einen SQL-Thread. Der E/A-Thread fordert den Master auf, das erhaltene Binlog-Protokoll in die Relay-Protokolldatei zu schreiben.
3. Der SQL-Thread liest die Protokolle in der Relay-Protokolldatei und zerlegt sie in bestimmte Vorgänge, um Konsistenz zwischen den Vorgängen des Masters und des Slaves und letztendlich Konsistenz zwischen den Daten zu erreichen.

這里寫圖片描述

Spezifische Implementierung der MySQL-Master-Slave-Konfiguration

1. Master-Konfiguration

(1) Ändern Sie die my.cnf-Konfigurationsdatei von MySQL. Das Schwierige dabei ist, dass die von mir verwendete MySQL-Version keine my.cnf-Konfigurationsdatei hat, nicht einmal eine my-default.cnf. Im Allgemeinen befindet sich my.cnf im Verzeichnis /etc und my-default.cnf in /usr/local/mysql/support-files. Schließlich habe ich eine my.cnf-Datei aus dem Internet kopiert und in /etc abgelegt (Freunde können sie selbst online finden, es gibt viele davon).
(2) Zu den Konfigurationen, die in my.cnf geändert werden müssen, gehören hauptsächlich das Aktivieren der Protokollierungsfunktion, das Festlegen der Server-ID, um ihre Eindeutigkeit sicherzustellen (sie darf nicht mit der Slave-Datenbank identisch sein), und das Filtern der Datenbanken, die gesichert werden müssen.

bash-3.2# vim /etc/my.cnf
# Server-ID festlegen, die nicht wiederholt werden kann. Im Allgemeinen kann sie auf die IP-Adresse der Hauptdatenbank festgelegt werden.
server_id=81
# Backup-Filter: Datenbank, die gesichert werden muss, Ausgabe Binlog
binlog-do-db=demo_ds_master
# Backup-Filter: Datenbanken, die nicht gesichert werden müssen, werden nicht ausgegeben binlog-ignore-db=mysql
# Binäres Logging aktivieren und die Daten der Master-Datenbank in einer Logdatei aufzeichnen, die mit mysql-bin beginnt (anpassbar)          
log-bin=mysql-bin
# Konfigurieren Sie den Speicher jeder Sitzung, der zum Speichern des Binärprotokollcaches während des Transaktionsprozesses verwendet wird. binlog_cache_size=1M
# Master-Slave-Replikationsformat (gemischt, Anweisung, Zeile, die Standardeinstellung ist Anweisung)
binlog_format=gemischt
# Die Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht werden/ablaufen. Der Standardwert ist 0, was bedeutet, dass keine automatische Löschung erfolgt. expire_logs_days=7
# Wird verwendet, um alle Fehler oder angegebenen Fehlertypen zu überspringen, die bei der Master-Slave-Replikation aufgetreten sind, um ein Slave-Terminal zu vermeiden. # 1062: Primärschlüsselkonflikt (spezifische Parameter sind online verfügbar)
Slave_Überspringen_Fehler=1062

(3) Starten/Neustarten des Master-Datenbankdienstes, Anmelden bei der Datenbank, Anlegen eines Datensynchronisationsbenutzers und Autorisieren

#Autorisieren Sie diese Maschine, um die Daten der Hauptdatenbank mysql zu sichern> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'192.168.31.60' identifiziert durch 'Passwort';
#Aktualisieren Sie dann die Berechtigungen mysql> flush privileges;
#Informationen zur konfigurierten Masterdatenbank anzeigen mysql> show master status; 

這里寫圖片描述

(4) Datensicherung der Master-Datenbank, um Datenkonsistenz zwischen Master- und Slave-Datenbanken sicherzustellen

# Tabelle vorübergehend sperren und Nur-Lese-Berechtigung festlegen mysql> Tabellen mit Lesesperre leeren;
# Sichern Sie die Datenbankbash-3.2# mysqldump -uroot -p --add-drop-table demo_ds_master_1 > /tmp/demo_ds_master_1.sql;
# Entsperren Sie die Tabellemysql> unlock table;

2. Slave-Konfiguration

(1) Ändern Sie die my.cnf-Konfigurationsdatei der Slave-Datenbank mysql und fügen Sie die Relay-Protokollkonfiguration der Slave-Datenbank hinzu

[root@entwickeln usw.]# vim my.cnf
# Server-ID festlegen, die nicht wiederholt werden kann. Hier wird die IP-Adresse der Slave-Datenbank festgelegt.
Server-ID = 60
# Aktivieren Sie das Relay-Protokoll aus der Datenbank, schreiben Sie das Binärprotokoll der Masterdatenbank in das Relay-Protokoll und das Relay-Protokoll beginnt mit hehe-mysql-relay-bin (anpassbar).
relay_log=hehe-mysql-relay-bin
# Setzen Sie die Slave-Datenbank auf schreibgeschützte Berechtigung, um Inkonsistenzen zwischen Master- und Slave-Daten zu vermeiden read_only=1

(2) Wenn die Slave-Datenbank als Master-Datenbank einer anderen Datenbank dienen muss, müssen Sie die Konfigurationsinformationen auf dem Master hinzufügen und log_slave_updates=1 hinzufügen, um das Binlog des Masters in Ihrem eigenen Binlog aufzuzeichnen.

這里寫圖片描述

(3) Starten Sie die Slave-Datenbank neu und synchronisieren Sie die Daten der Master-Datenbank

# Führen Sie die Sicherungsdatenbank der Masterdatenbank aus [root@develop etc]# mysql -uroot -p demo_ds_master_1 < /tmp/demo_ds_master_1.sql
# Melden Sie sich bei der Slave-Datenbank an [root@develop etc]# mysql -uroot -p
# Setzen Sie den Masterknoten des Slave-Knotens mysql> ändern Sie den Master in master_host='192.168.31.80', master_user='root',master_password='password',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;
# Master-Slave-Synchronisierung aktivieren mysql> start slave;
# Überprüfen Sie den Master-Slave-Synchronisierungsstatusmysql> show slave status\G;
# Den Status der Master- und Slave-Threads anzeigen mysql> show processlist\G; 

這里寫圖片描述

Das folgende Bild zeigt, dass die Master-Slave-Replikation konfiguriert wurde. Durch das Einfügen von Daten in die Master-Datenbank kann nun die automatische Replikation der Master-Datenbankdaten durch die Slave-Datenbank realisiert werden.

  • Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
  • Slave_IO_Running: Ja
  • Slave_SQL_Running: Ja

Dies ist das Ende dieses Artikels über die Implementierungsschritte der MySQL-Master-Slave-Replikation. Weitere relevante Inhalte zur MySQL-Master-Slave-Replikation finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Prinzip und Anwendung der MySQL-Master-Slave-Synchronisation
  • Analyse des Prinzips und der Funktion der MySQL-Datenbank-Master-Slave-Replikation
  • Detaillierte Erläuterung der mysql5.6 Master-Slave-Einrichtung und asynchroner Probleme

<<:  CSS3-Countdown-Effekt

>>:  Tabelle zeigt den Grenzcode, den Sie anzeigen möchten

Artikel empfehlen

5 Befehle zur Verwendung des Rechners in der Linux-Befehlszeile

Hallo zusammen, ich bin Liang Xu. Bei der Verwend...

Ein magischer MySQL-Deadlock-Troubleshooting-Datensatz

Hintergrund Apropos MySQL-Deadlock: Ich habe bere...

MySQL-Lösung zur Datenpaging-Abfrageoptimierung auf Millionenebene

Wenn die Tabelle Zehntausende Datensätze enthält,...

FastDFS- und Nginx-Integration zur Codeanalyse

FastDFS- und Nginx-Integration: Der Tracker wird ...

Detaillierte Einführung in CSS-Schrift-, Text- und Listeneigenschaften

1. Schrifteigenschaften Farbe, gibt die Farbe des...

So verwenden Sie Navicat zum Bedienen von MySQL

Inhaltsverzeichnis Vorwort: 1. Einführung in Navi...

Detaillierte Erläuterung des Vue-Router-Routings

Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...

Super einfache QPS-Statistikmethode (empfohlen)

Statistik der QPS-Werte der letzten N Sekunden (i...

Schritt-für-Schritt-Anleitung zum Erstellen einer Kalenderkomponente mit React

Inhaltsverzeichnis Betriebswirtschaftlicher Hinte...

Automatischer Commit-Vorgang für MySQL-Transaktionen

Der Standardbetriebsmodus von MySQL ist der Autoc...

Die Prinzipien und Mängel der MySQL-Volltextindizierung

Der MySQL-Volltextindex ist ein spezieller Index,...