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

Spezifische Verwendung des Node.js-Paketmanagers npm

Inhaltsverzeichnis Zweck npm init und package.jso...

Analyse des Prinzips des Rabbitmq Heartbea-Herzschlagerkennungsmechanismus

Vorwort Wenn Sie RabbitMQ verwenden und für einen...

MySQL implementiert eine Beispielmethode zum Anmelden ohne Kennwort

Spezifische Methode: Schritt 1: Stoppen Sie den M...

Lösung für den Konfigurationsfehler des Nginx-SSL-Zertifikats

1. Einleitung Wenn ein Webprojekt auf unserem Lin...

Linux-Plattform MySQL ermöglicht Remote-Login

Während des Entwicklungsprozesses stoße ich häufi...

Warum wird für die Webseitenkodierung UTF-8 statt GBK oder GB2312 verwendet?

Wenn Sie die Wahl haben, sollten Sie UTF-8 verwen...

MySQL max_allowed_packet-Einstellung

max_allowed_packet ist ein Parameter in MySQL, de...

So bewerben Sie sich für Webdesign-Jobs

<br />Hallo zusammen! Es ist mir eine Ehre, ...

Wann ist die Verwendung von dl, dt und dd sinnvoll?

dl: Definitionsliste Definitionsliste dt: Definiti...

So ändern Sie die Server-UUID in MySQL

Quelle des Problems: Wenn der Slave-Server der ge...

Schritte zum Bereitstellen eines Spring Boot-Projekts mit Docker

Inhaltsverzeichnis Erstellen Sie ein einfaches Sp...

Native JS-Kapselung, nahtlose Karussellfunktion

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