So ändern Sie die Master-Slave-Replikationsoptionen in MySQL online

So ändern Sie die Master-Slave-Replikationsoptionen in MySQL online

Vorwort:

Die am häufigsten verwendete Architektur von MySQL ist die Master-Slave-Replikation. Tatsächlich gibt es viele Optionen für die Master-Slave-Replikation, insbesondere auf der Slave-Seite. Wir können Replikationsfilter festlegen, z. B. das Ignorieren einer Tabelle oder einer Datenbank. Diese Filteroptionen können online ohne Neustart geändert werden. Ich wusste vorher nicht viel darüber, aber ich habe kürzlich einige relevante Informationen gelesen und finde diese Funktion persönlich sehr praktisch. In diesem Artikel werde ich diese Inhalte mit Ihnen teilen.

1. Einführung in das Kopieren von Filterparametern

Zuerst müssen wir die verschiedenen Parameter zum Festlegen von Replikationsfiltern verstehen. Die Replikationsfilterung wird auf der Seite der Slave-Datenbank festgelegt. Sie können nur bestimmte Datenbanken oder Tabellen kopieren oder das Kopieren bestimmter Datenbanken oder Tabellen ignorieren. Diese werden alle durch unterschiedliche Parameter gesteuert. Nachfolgend finden Sie eine kurze Einführung in die Funktionen der verschiedenen Parameter.

  • REPLICATE_DO_DB: Gibt an, nur die Daten einer bestimmten Datenbank zu synchronisieren
  • REPLICATE_IGNORE_DB: Synchronisation einer Datenbank ignorieren
  • REPLICATE_DO_TABLE: Gibt an, dass eine Tabelle synchronisiert werden soll
  • REPLICATE_IGNORE_TABLE: Synchronisation einer Tabelle ignorieren
  • REPLICATE_WILD_DO_TABLE: Gibt an, dass bestimmte Tabellen synchronisiert werden sollen. Sie können Platzhalter verwenden.
  • REPLICATE_WILD_IGNORE_TABLE: Ignorieren Sie die Synchronisierung bestimmter Tabellen. Sie können Platzhalter verwenden
  • REPLICATE_REWRITE_DB: Ersetzen Sie den Datenbanknamen von der Datenbankseite

Diese Replikationsfilterparameter sind leicht zu verstehen. Allein durch einen Blick auf den Namen können Sie die Funktion des Parameters grob verstehen. Standardmäßig sind diese Parameter nicht festgelegt. Nachdem die Master-Slave-Replikation aktiviert wurde, synchronisiert die Slave-Datenbank standardmäßig alle von der Master-Datenbank gesendeten Daten.

2. Ändern Sie die Kopierfilteroptionen

Wenn wir die Replikationsstrategie der Slave-Bibliothek vorübergehend anpassen möchten, können wir die oben genannten Parameter festlegen. Wir können die Filterparameter in die Konfigurationsdatei schreiben und dann die Slave-Bibliothek neu starten, um sie anzuwenden. Diese Methode erfordert jedoch einen Neustart der Instanz und wird nicht empfohlen. MySQL Version 5.7 kann die Replikationsfilterung online einrichten. Allerdings muss die Replikation trotzdem gestoppt werden, ein Neustart der Instanz ist jedoch nicht erforderlich, was die Durchführung vorübergehender Anpassungen erleichtert. Am häufigsten wird die Anweisung CHANGE REPLICATION FILTER verwendet. Machen wir einen einfachen Test:

# Die Replikationsfilterung ist standardmäßig nicht aktiviertmysql> show slave status\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 10.0.3.16
         Master_Benutzer: repl
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File: binlog.000004
     Read_Master_Log_Pos: 35198
        Relay_Log_File: relay-bin.000002
        Relay_Log_Pos: 910
    Relay_Master_Log_File: binlog.000004
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: 
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 0
          Letzter_Fehler: 
         Skip_Counter: 0
     Exec_Master_Log_Pos: 35198
     
 # So einstellen, dass die Replikation der db1-Bibliothek ignoriert wird mysql> STOP SLAVE SQL_THREAD;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> REPLIKATIONSFILTER ÄNDERN REPLICATE_IGNORE_DB = (db1);
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> STARTE SLAVE SQL_THREAD;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 10.0.3.16
         Master_Benutzer: repl
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File: binlog.000004
     Read_Master_Log_Pos: 35198
        Relay_Log_File: relay-bin.000002
        Relay_Log_Pos: 910
    Relay_Master_Log_File: binlog.000004
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: db1
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 0
          Letzter_Fehler: 
         Skip_Counter: 0
     Exec_Master_Log_Pos: 35198
 
# Erstellen Sie db1 in der Masterdatenbank, um zu testen, ob die Slavedatenbank synchronisiert ist mysql> CREATE DATABASE `db1` DEFAULT CHARACTER SET utf8;
Abfrage OK, 1 Zeile betroffen (0,01 Sek.)
mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|db1|
|mysql |
| Leistungsschema |
|System|
|testdb|
+--------------------+
6 Zeilen im Satz (0,00 Sek.)
# Den Status der Slave-Datenbank anzeigenmysql> show databases;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
|testdb|
+--------------------+
5 Zeilen im Satz (0,00 Sek.)
mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 10.0.3.16
         Master_Benutzer: repl
         Master_Port: 33061
        Verbindungswiederholung: 60
       Master_Log_File: binlog.000004
     Read_Master_Log_Pos: 35383
        Relay_Log_File: relay-bin.000002
        Relay_Log_Pos: 1095
    Relay_Master_Log_File: binlog.000004
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: db1
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 0
          Letzter_Fehler: 
         Skip_Counter: 0
     Exec_Master_Log_Pos: 35383
     
# Brechen Sie den Replikationsfilterparameter ab mysql> STOP SLAVE SQL_THREAD;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
mysql> REPLIKATIONSFILTER ÄNDERN REPLICATE_IGNORE_DB = ();
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
mysql> STARTE SLAVE SQL_THREAD;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)
mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 10.0.3.16
         Master_Benutzer: repl
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File: binlog.000004
     Read_Master_Log_Pos: 35383
        Relay_Log_File: relay-bin.000002
        Relay_Log_Pos: 1095
    Relay_Master_Log_File: binlog.000004
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: 
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 0
          Letzter_Fehler: 
         Skip_Counter: 0
     Exec_Master_Log_Pos: 35383

Wir haben kurz gezeigt, wie Sie Replikationsfilteroptionen online mit der Anweisung CHANGE REPLICATION FILTER ändern können. Alle aufgeführten Filterparameter können mit dieser Anweisung geändert werden. Beachten Sie jedoch, dass sich einige Optionen gegenseitig ausschließen. Entsprechende Parameter sollten je nach tatsächlichem Bedarf festgelegt werden. Nachfolgend finden Sie eine Beispielsyntax aus der offiziellen Dokumentation:

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)
Datenbankliste:
  Datenbankname[, Datenbankname][, ...]
tbl_liste:
  db_name.tabellenname[, db_tabellenname][, ...]
wild_tbl_list:
  'db_pattern.Tabellenmuster'[, 'db_pattern.Tabellenmuster'][, …]
Datenbankpaarliste:
  (Datenbankpaar)[, (Datenbankpaar)][, ...]
Datenbankpaar:
  von_db, nach_db

Zusammenfassen:

In diesem Artikel erfahren Sie, wie Sie Replikationsfilteroptionen online ändern. Unterschiedliche Filterparameter haben unterschiedliche Verwendungszwecke. Wenn Sie wirklich Filterparameter festlegen müssen, empfiehlt es sich, einen umfassenden Test durchzuführen. Einige Parametereinstellungen können sich auf die Replikation anderer Datenbanktabellen auswirken. Wenn Sie möchten, dass es dauerhaft wirksam ist, können Sie es online ändern und dann zur Konfigurationsdatei hinzufügen, sodass es auch nach dem Neustart der Slave-Bibliothek noch wirksam ist.

Oben finden Sie Einzelheiten dazu, wie Sie die Master-Slave-Replikationsoptionen von MySQL online ändern können. Weitere Informationen zum Ändern der Master-Slave-Replikation von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Tutorial zum Erstellen einer Master-Slave-Replikationsarchitektur für MySQL 5.7 Docker
  • Zusammenfassung verschiedener Replikationsmethoden für die MySQL Master-Slave-Replikation
  • Detaillierte Analyse der MySQL Master-Slave-Replikation
  • Detaillierte Erläuterung des Prinzips und der Praxis der MySQL-Master-Slave-Replikation
  • So konfigurieren Sie die MySQL Master-Slave-Replikation unter Windows
  • Implementierungsschritte zum Erstellen einer MySQL Master-Slave-Replikationsumgebung basierend auf Docker
  • Detaillierte Erläuterung der Rolle und des Funktionsprinzips der MySQL-Master-Slave-Replikation
  • Lösung für die lange Verzögerung der MySQL-Datenbank-Master-Slave-Replikation
  • Gängige Master-Slave-Replikationsarchitekturen in MySQL 4

<<:  Ubuntu installiert mehrere Versionen von CUDA und wechselt jederzeit

>>:  TypeScript-Lernhinweise: Typeingrenzung

Artikel empfehlen

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.27 winx64

In diesem Artikel wird die Installations- und Kon...

Details zum Vergleich der MySQL-Datenkomprimierungsleistung

Inhaltsverzeichnis 1. Testumgebung 1.1 Hardware u...

Sortierung und Paginierung von MySQL-Abfragen

Überblick Da wir die Daten normalerweise nicht di...

HTML-Grundlagen - Zusammenfassung - Empfehlung (Absatz)

HTML-Absatz Absätze werden durch das Tag <p>...

MySQL-Abfrageoptimierung: Ursachen und Lösungen für langsame Abfragen

Freunde, die in der Entwicklung tätig sind, insbe...

CSS-Schreibformat, detaillierte Erklärung der Grundstruktur einer mobilen Seite

1. CSS-Schreibformat 1. Inline-Stile Sie können C...

Beispielerklärung für langsame MySQL-Abfragen und -Protokolle

1. Einleitung Durch Aktivieren des Slow Query Log...

Vue implementiert einfache Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Samba-Serverkonfiguration unter Centos7 (tatsächlicher Kampf)

Samba Übersicht Samba ist eine kostenlose Softwar...

Vue implementiert eine Komponente zur dynamischen Abfrageregelgenerierung

1. Dynamische Abfrageregeln Die dynamischen Abfra...

HTML-Auszeichnungssprache - Referenz

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

9 Tipps zur MySQL-Datenbankoptimierung

Inhaltsverzeichnis 1. Wählen Sie die am besten ge...