Detaillierte Erläuterung der MySQL-Filterreplikationsideen

Detaillierte Erläuterung der MySQL-Filterreplikationsideen

MySQL gefilterte Replikation

Zwei Ideen:

  • Implementiert im Binärprotokoll der Hauptbibliothek (nicht empfohlen, versuchen Sie sicherzustellen, dass das Binärprotokoll der Hauptbibliothek vollständig ist)
  • Implementiert aus dem SQL-Thread der Bibliothek

Versuchen Sie daher, die Master-Slave-Filterreplikation nicht zu verwenden, sondern verwenden Sie sie nur auf der Slave-Datenbank, da die Integrität des Binärprotokolls so weit wie möglich gewährleistet sein sollte.

Implementiert auf der Hauptdatenbank

Um die Integrität des Binärprotokolls auf der Masterseite sicherzustellen, wird keine Binärprotokollfilterung verwendet.

Hauptkonfigurationsparameter der Bibliothek:

#Fügen Sie binlog-do-db=db_name zur Konfigurationsdatei hinzu. #Definieren Sie eine Whitelist und zeichnen Sie im Binärprotokoll nur Vorgänge auf, die sich auf die angegebene Datenbank beziehen. Wenn die Hauptdatenbank abstürzt, wird nur der Inhalt der angegebenen Datenbank wiederhergestellt. Dies wird auf dem Hauptserver nicht empfohlen, da dies zu unvollständigen Protokollen führt.
binlog-ignore-db=db_name #Definieren Sie eine Blacklist. Schreibvorgänge in der Datenbank, die als Ignorieren definiert sind, werden nicht im Binärprotokoll aufgezeichnet.

Aus der Bibliothek implementiert

Sie können die Konfigurationsdatei herunterladen

REPLICATE_DO_DB = (db_list) #Filtern, welche Bibliotheken kopiert werden sollenREPLICATE_IGNORE_DB = (db_list) #Welche Bibliotheken nicht kopiert werden sollenREPLICATE_DO_TABLE = (tbl_list) #Tabelle filternREPLICATE_IGNORE_TABLE = (tbl_list) #Gefilterte Tabelle ignorierenREPLICATE_WILD_DO_TABLE = (wild_tbl_list) #Tabelle nach regulärer Übereinstimmung filternREPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list) #Filterung dieser Tabellen nach regulärer Übereinstimmung ignorierenREPLICATE_REWRITE_DB = (db_pair_list)
#Schreiben Sie die Anweisungen in db1 der Quelldatenbank in db2 der Slave-Datenbank um
REPLIKATIONSFILTER ÄNDERN REPLICATE_REWRITE_DB = ((db1, db2));

Grammatik:

Syntaxreferenz der offiziellen Website: https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html

REPLIKATIONSFILTER ÄNDERN Filter[, Filter][, ...]

Filter: {
    REPLICATE_DO_DB = (Datenbankliste)
  | REPLICATE_IGNORE_DB = (Datenbankliste)
  | REPLICATE_DO_TABLE = (Tabellenliste)
  | REPLICATE_IGNORE_TABLE = (Tabellenliste)
  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wilde_Tabellenliste)
  | REPLICATE_REWRITE_DB = (Datenbankpaarliste)
}
# Implementieren Sie eine gefilterte Replikation aus der Bibliothek „stop slave sql_thread“;
​ Replikationsfilter ändern replicate_do_db=(db);
​ Starten Sie den Slave-SQL-Thread.

#Gefilterte Replikation abbrechen, Slave sql_thread stoppen;
​ Replikationsfilter ändern replicate_do_db=();
​ Starten Sie den Slave-SQL-Thread.

Einige Fragen

Die Masterdatenbank löscht eine Tabelle, aber die Slavedatenbank verfügt nicht über diese Tabelle, wodurch der SQL-Thread der Slavedatenbank geschlossen wird.

Oder Master und Slave funktionieren normal, aber der Slave löscht versehentlich eine Tabelle und der Master löscht die Tabelle später. Der Slave löscht dann die nicht vorhandene Tabelle, meldet einen Fehler und führt zum Beenden des SQL-Threads.

Lösung: Überspringen Sie diesen Schritt

Lösung: Überspringen Sie den fehlerhaften Betriebsschritt des Slave-SQL-Threads und stoppen Sie den Slave-SQL-Thread.

#Finde Executed_Gtid_Set und führe es bis 19 aus
setze gtid_next='94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:20'; weise der nächsten Transaktion GTID zu; beginne; committe;
setze gtid_next=automatic; das System vergibt automatisch gtid
Starten Sie den Slave-SQL-Thread.

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung der MySQL-Filter- und Replikationskonzepte. Weitere relevante Inhalte zu MySQL-Filter- und Replikationsinhalten finden Sie in früheren Artikeln auf 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:
  • Wie erreicht MySQL die Parallelität mehrerer Versionen?
  • Detaillierte Erläuterung des Anwendungsfalls für MySQL-Fremdschlüssel (FOREIGN KEY)
  • So verwenden Sie gespeicherte Prozeduren in MySQL, um schnell 1 Million Datensätze zu generieren
  • Die Python-Schnittstellenautomatisierung analysiert kurz den Betriebsprozess der PyMySQL-Datenbank
  • MySQL-Transaktionskontrollfluss und ACID-Eigenschaften
  • Mysql verwendet gespeicherte Prozeduren, um schnell Millionen von Datenbeispielcodes hinzuzufügen
  • Implementierung zum Entfernen überlappender Zeiten und Berechnen der Zeitdifferenz in MySQL
  • In der MySQL-Datenbank werden datetime, bigint und timestamp zur Darstellung der Zeitauswahl verwendet. Welches davon ist für die Zeitspeicherung am effizientesten?
  • Spezifische Verwendung von MySQL-Globalsperren und Sperren auf Tabellenebene
  • Analyse der MySQL-Absturzwiederherstellung basierend auf Redo Log und Undo Log

<<:  Beispielcode zum Erstellen eines Admin-Dashboard-Layouts mit CSS und JavaScript

>>:  Lösen Sie das Problem der Containerverwaltung mit Docker Compose

Artikel empfehlen

Erste Schritte mit den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Wo man JavaScript schreibt ...

Lösung, wenn Docker plötzlich vom externen Netzwerk nicht mehr erreichbar ist

Nach den Methoden der Meister wurde die Ursache g...

Blog-Design Webdesign-Debüt

Die erste Webseite, die ich entworfen habe, sieht...

Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet

Amtliche Dokumentation: Daher sollte MySQL wie fo...

Zusammenfassung der Verwendung von setTimeout() in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. Der Unterschi...

So überwachen Sie globale Variablen im WeChat-Applet

Ich bin kürzlich bei der Arbeit auf ein Problem g...

Detaillierte Erklärung zur Verwendung der Element-el-button-Button-Komponente

1. Hintergrund Schaltflächen werden sehr häufig v...

Detaillierte Erläuterung des Fehlerproblems der Case-When-Anweisung

Vorwort In der MySQL-Datenbank verwenden wir manc...

Diskussion über die Browsing-Designmethode für Webseiteninhalte

<br />Wenn ein Artikel auf einer Inhaltsseit...

Beispiel für das Schreiben von mobilem H5 zum Aufrufen einer APP (IOS, Android)

iOS 1. URL-Schema Diese Lösung ist grundsätzlich ...

JS verwendet die Methode „reduce()“, um Baumstrukturdaten zu verarbeiten

Inhaltsverzeichnis Definition Grammatik Beispiele...

Eine Codezeile löst verschiedene IE-Kompatibilitätsprobleme (IE6-IE10)

x-ua-compatible wird verwendet, um das Modell für...

Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung

1. Festplattenpartition: 2. fdisk-Partition Wenn ...