Zusammenfassung der Vorteile der Bereitstellung von MySQL Delayed Slaves

Zusammenfassung der Vorteile der Bereitstellung von MySQL Delayed Slaves

Vorwort

Die Master-Slave-Replikationsbeziehung von MySQL wird weniger streng als „Synchronisation“ oder „Master-Slave-Synchronisation“ bezeichnet. Tatsächlich konnten Master und Slave von MySQL in der Anfangszeit keine echte „Synchronisierung“ (sync) erreichen, sondern nur eine „Asynchronität“ (async).

Die MySQL-Master-Slave-Replikation kann mehrere Modi haben. Der klassischste und älteste ist die asynchrone Replikation (async replication). Seit Version 5.5 ist die semisynchrone Replikation (semi-sync replication) verfügbar, und seit 5.7 ist die erweiterte semisynchrone Replikation verfügbar. Die in diesem Artikel besprochene verzögerte Slave-Bibliothek ist auch eine Funktion, die nach 5.6 verfügbar ist. Zuvor muss sie mit dem Percona pt-slave-delay-Tool getarnt implementiert werden.

Darüber hinaus wurde seit Version 5.6 die parallele Replikation hinzugefügt, diese basiert jedoch immer noch auf dem schemabasierten Parallelmodus (Slave-Parallel-Typ = DATABASE), der sehr ineffizient und sinnlos ist. In 5.7 wurde eine echte parallele Replikation (Slave-Parallel-Typ = LOGICAL_CLOCK) implementiert, die die Replikationseffizienz erheblich verbesserte. Darüber hinaus wurde eine Multi-Source-Replikation hinzugefügt, die die Implementierung einer Multi-Master- und einer Slave-Architektur sehr bequem machte.

Nachdem wir uns nun mit der kurzen Geschichte der MySQL-Replikation befasst haben, kommen wir nun zum Punkt.

Die Vorteile von MySQL Delayed Slaves sind folgende:

1. Wenn Daten versehentlich gelöscht werden, können sie schneller wiederhergestellt werden.

Manchmal werden Online-Daten aufgrund von Handshakes versehentlich gelöscht, oder die Datenbank, Tabelle oder andere Objekte werden versehentlich gelöscht, oder Aktualisierungen oder Löschungen werden durchgeführt, ohne WHERE-Bedingungen hinzuzufügen. All dies kann dazu führen, dass die verzögerte Slave-Datenbank zum Zeitpunkt vor der falschen Operation anhält und dann wiederhergestellt wird.

2. Verwenden Sie den verzögerten Slave als dedizierten Backup-Knoten. Obwohl es zu einer gewissen Verzögerung kommt, wirkt sich dies weder auf die Verwendung des Knotens als Sicherungsrolle noch auf die Datenbankbibliothek des Produktionsknotens aus.

3. Sie können die Verzögerungsbibliothek auch als Objekt einiger Probleme und Fallstudien verwenden. Manchmal können einige Binlog-Ereignisse Probleme auf normalen Slaves verursachen (zum Beispiel das klassische Problem in frühen Versionen, bei dem kein Primärschlüssel sehr langsame Updates auf Slaves verursacht). In diesem Fall haben Sie Zeit, verzögerte Slaves langsam zu untersuchen und zu erforschen.

Die Methode zum Aktivieren des verzögerten Slaves ist ebenfalls sehr einfach. So funktioniert es in MySQL 8.0:

#Verwenden Sie zum Einstellen direkt CHANGE MASTER TO. Die folgende N-Einheit ist Sekunden CHANGE MASTER TO MASTER_DELAY = N

Wenn ein Fehler auftritt und die verzögerte Slave-Bibliothek an einer bestimmten Position angehalten werden muss, verwenden Sie den folgenden Befehl:

SLAVE STARTEN
BIS {
#1. Stoppen bis zur angegebenen GTID-Position {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set

#2. Stoppen Sie bis zur angegebenen Binärprotokollposition | MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos

#3. Stoppen Sie bis zur angegebenen Relay-Log-Position | RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos

#4. Stoppen Sie, bis zwischen mehreren parallelen Threads auf dem Slave keine Verzögerungslücke mehr besteht. #Aufgrund der Multithread-Replikation ist der Replikationsfortschritt verschiedener Threads unterschiedlich, sodass eine Lücke entsteht | SQL_AFTER_MTS_GAPS }

PS: Ab 5.7 kann die Änderung der Option MASTER_DELAY sofort online wirksam werden, ohne dass der Slave-Thread neu gestartet werden muss.

Was die spezifische MASTER_DELAY-Einstellung betrifft, müssen Sie die durchschnittliche Zeit schätzen, die der DBA benötigt, um im Fehlerfall vor Ort einzutreffen. Im Allgemeinen wird etwa 1 Stunde empfohlen.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Eine Fallstudie zur Fehlerbehebung bei Verzögerungen in Slave-Datenbanken in MySQL
  • Analyse und Lösung des MySQL-Master-Slave-Asynchronie-Verzögerungsprinzips
  • Detaillierte Erläuterung zur Reduzierung der MySQL Master-Slave-Datensynchronisationsverzögerung
  • Grundlegendes Tutorial zum Lösen von Slave-Latenzproblemen in MySQL
  • Optimierungsmethode für das MySQL-Synchronisierungsproblem mit großer Slave-Verzögerung
  • Methode zur Leistungsoptimierung mit verzögerter Zuordnung von MySQL
  • mySQL Delayed Query Haupttabelle
  • Ausführliche Erläuterung des MySQL Master-Slave-Replikationsverzögerungsproblems

<<:  Lösung für den Fehler „Disk sda contains BIOS RAID metadata“ bei der Installation von CentOS 6.x

>>:  Vite2.0 Fallstricke

Artikel empfehlen

Native JS-Kapselung, nahtlose Karussellfunktion

Natives js-gekapseltes nahtloses Karussell-Plug-I...

Lösen Sie das Problem inkonsistenter Front- und Back-End-Ports von Vue

Die Front- und Back-End-Ports von Vue sind inkons...

Natives JavaScript zur Implementierung einer zufälligen Namensaufruftabelle

In diesem Artikelbeispiel wird der spezifische Co...

Umfassende Website-Bewertungslösung

<br />Manchmal werden Ihnen möglicherweise F...

So ändern Sie das Kennwort von mysql5.7.20 unter Linux CentOS 7.4

Nach dem Upgrade von MySQL auf Version 5.7 wurde ...

Zusammenfassung des MySQL-Installationsdiagramms

Grafisches Tutorial zur Installation und Konfigur...

Detaillierte Erläuterung der vier Transaktionsisolationsebenen in MySQL

Die Testumgebung dieses Experiments: Windows 10+c...

JS ES neue Funktionen Vorlagenzeichenfolge

Inhaltsverzeichnis 1. Was ist eine Vorlagenzeiche...

Detaillierte Erläuterung der Verwendung von Object.create-Instanzen in js

1. Erstellen Sie mit der Methode Object.create() ...

Ubuntu führt regelmäßig Beispielcode eines Python-Skripts aus

Originallink: https://vien.tech/article/157 Vorwo...

Native JS implementiert einen sehr gut aussehenden Zähler

Heute zeige ich Ihnen einen gut aussehenden Zähle...

Einführung in die Verwendung des offiziellen MySQL-Leistungstesttools mysqlslap

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...