So konfigurieren Sie MGR Single Master und mehrere Slaves in MySQL 8.0.15

So konfigurieren Sie MGR Single Master und mehrere Slaves in MySQL 8.0.15

1. Einleitung

MySQL Group Replication (kurz MGR) bedeutet wörtlich MySQL-Gruppenreplikation, handelt es sich jedoch tatsächlich um eine hochverfügbare Clusterarchitektur, die derzeit nur die MySQL-Versionen 5.7 und 8.0 unterstützt.

Es handelt sich um eine neue Lösung mit hoher Verfügbarkeit und Skalierbarkeit, die im Dezember 2016 von MySQL offiziell eingeführt wurde und MySQL-Clusterdienste mit hoher Verfügbarkeit, Skalierbarkeit und Zuverlässigkeit bietet.

Es handelt sich außerdem um eine neue Cluster-Architektur mit hoher Verfügbarkeit, die auf dem Konzept der Gruppenreplikation basiert und vollständig von MariaDB Galera Cluster und Percona XtraDB Cluster referenziert wird.

MySQL Group Replication basiert auf XCom, das wiederum auf Paxos basiert. Gerade aufgrund der XCom-Infrastruktur kann die Transaktionskonsistenz der Datenbankzustandsmaschine zwischen Knoten in Theorie und Praxis gewährleistet werden.

Ausgehend vom allgemeinen Master-Slave-Replikationskonzept bilden mehrere Knoten zusammen einen Datenbankcluster. Die Übermittlung einer Transaktion muss von mehr als der Hälfte der Knoten genehmigt werden. Auf jedem Knoten im Cluster wird eine Datenbankzustandsmaschine verwaltet, um die Konsistenz der Transaktionen zwischen den Knoten sicherzustellen.

Vorteil:

Hohe Konsistenz, Gruppenreplikationstechnologie basierend auf nativer Replikation und Paxos-Protokoll.

Hohe Fehlertoleranz mit automatischem Erkennungsmechanismus. Bei Ausfallzeiten wird der Problemknoten automatisch entfernt und andere Knoten können normal verwendet werden (ähnlich wie beim zk-Cluster). Wenn es zu Ressourcenkonflikten zwischen verschiedenen Knoten kommt, werden diese nach dem Prinzip „Wer zuerst kommt, mahlt zuerst“ behandelt und es ist ein automatischer Brain-Split-Schutzmechanismus integriert.

Hohe Skalierbarkeit, Knoten können jederzeit online hinzugefügt und entfernt werden, und der Status aller Knoten wird automatisch synchronisiert, bis der neue Knoten mit anderen Knoten übereinstimmt, und die neuen Gruppeninformationen werden automatisch beibehalten.

Hohe Flexibilität, direkte Plug-In-Installation (5.7.17 und höher werden mit .so-Plug-In geliefert), Single-Master-Modus und Multi-Master-Modus. Im Single-Master-Modus kann nur die Master-Datenbank lesen und schreiben, und andere Slave-Datenbanken werden mit dem Status super_read_only hinzugefügt, der nur lesen, aber nicht schreiben kann. Im Fehlerfall wird der Master automatisch ausgewählt.

Mangel:

Es ist noch zu neu und nicht sehr stabil. Seine Leistung ist immer noch etwas schlechter als PXC. Es erfordert eine sehr hohe Netzwerkstabilität, zumindest im selben Computerraum.

2. Umgebung Einführung

MySQL-Version: 8.0.15

Datenbank-Port: 3306

Cluster-Replikationsport: 33006

MGR-Plugin: group_replication.so

10.115.88.18: Einzelmaster

10.115.88.19: Von

10.115.88.20: Von

3. Installieren Sie MySQL 8.0.15

3.1.1 Downloadadresse:

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-x86_64.tar

3.1.2: Installieren der Datenbank

Entpacken

tar -xf mysql-8.0.15-linux-glibc2.12-x86_64.tar -C /home/work

Geben Sie das entpackte Verzeichnis ein

CD /Home/Arbeit

tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz

mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql

rm -rf *.xz

Erteilen Sie Berechtigungen und erstellen Sie das Datenverzeichnis

CD /Home/Arbeit

tar xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.gz

mv mysql-8.0.15-linux-glibc2.12-x86_64 mysql

rm -rf *.xz
  chown -R Arbeit:Arbeit MySQL
  mkdir-Daten
  chown Arbeit: Arbeitsdaten
  cd /home/arbeit/mysql

   cd /home/work mkdir /home/work/relaylog chown -R Arbeit:Arbeit Relaylog
  cd /home/work/mysql mkdir ausführen chown -R work:work ausführen

Datei my.cnf hinzufügen

[Kunde]
Standardzeichensatz = utf8
socket=/home/work/mysql/run/mysql.sock

[mysqld]
Benutzer = Arbeit 
Port = 3306
basedir=/home/arbeit/mysql
datadir=/home/arbeit/daten
socket=/home/work/mysql/run/mysql.sock
pid-Datei=/home/work/mysql/run/mysqld.pid
# Das Deaktivieren symbolischer Links wird empfohlen, um verschiedene Sicherheitsrisiken zu vermeiden
symbolische Links = 0
Kleinbuchstaben-Tabellennamen = 1


Server-ID = 183306 
log-bin = mysql-bin
log-bin-index = binlogs.index
binlog_format = Zeile
binlog_rows_query_log_events = ein
binlog_checksum = keine

Slave-Parallel-Typ = LOGICAL_CLOCK
Sklaven-Parallelarbeiter = 4
Slave_Preserve_Commit_Order = 1

#GITD
gtid_mode = ein
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery = 1

relay_log = /home/arbeit/relaylog/relay.log
relay-log-index = /home/arbeit/relaylog/relay.index
master_info_repository = Tabelle
relay_log_info_repository = Tabelle

plugin_load="Gruppenreplikation=Gruppenreplikation.so"

#MGR
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
Namensauflösung überspringen
externe Verriegelung überspringen
Zeichensatzserver = utf8
Kleinbuchstabentabellennamen = 1
event_scheduler=ein
log_bin_trust_function_creators=ein

max_Verbindungen = 3000 
externe Sperre = FALSE 
max_allowed_packet = 32M 
Sortierpuffergröße = 8 M 
Join-Puffergröße = 2 M 
Thread-Cache-Größe = 300 
#Abfrage-Cachegröße = 64 M 
#query_cache_limit = 4M 
read_rnd_buffer_size = 8M

innodb_buffer_pool_size = 8096 M
innodb_log_file_size = 128 M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1



[mysqld_safe]
log-error=/home/arbeit/daten/err.log

Initialisieren der Datenbank

bin/mysqld --initialize --basedir=/home/work/mysql --lower-case-table-names=1 --datadir=/home/work/data/ --user=work

Kopieren Sie die Startdatei

cp support-files/mysql.server /etc/init.d/mysqld

Umgebungsvariablen hinzufügen

echo 'export PATH=/home/work/mysql/bin:$PATH' >>/etc/profile
Quelle /etc/Profil

Datenbankstart

/etc/init.d/mysqld starten

Datenbankkennwort ändern

ändere den Benutzer „root“@„localhost“, IDENTIFIZIERT DURCH „dashuaige“; 

Berechtigungen leeren;

4. MGR-Master konfigurieren

4.1.1 Konfigurieren Sie die Datei my.cnf

Ändern Sie das Binlog wie folgt:

Server-ID = 103306
log-bin = mysql-bin
log-bin-index = binlogs.index
binlog_format = Zeile
binlog_rows_query_log_events = ein
binlog_checksum = keine

Slave-Parallel-Typ = LOGICAL_CLOCK
Sklaven-Parallelarbeiter = 4
Slave_Preserve_Commit_Order = 1

Ändern Sie die GTID wie folgt:

gtid_mode = ein
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery = 1

relay_log = /home/arbeit/relaylog/relay.log
relay-log-index = /home/arbeit/relaylog/relay.index
master_info_repository = Tabelle
relay_log_info_repository = Tabelle

MGR-Plugin hinzufügen

plugin_load="Gruppenreplikation=Gruppenreplikation.so"

MGR-Parameter ändern

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::

Starten der Datenbank

/etc/init.d/mysqld neu starten

4.1.2 Konfigurieren Sie die Hostauflösung jedes Hosts

[root@bj1-10-115-88-18 mysql]# Katze /etc/hosts
127.0.0.1 lokaler Host lokaler Host.lokale Domäne lokaler Host4 lokaler Host4.lokale Domäne4
::1 lokaler Host lokaler Host.lokale Domäne lokaler Host6 lokaler Host6.lokale Domäne6
10.115.88.18 bj1-10-115-88-18
10.115.88.19 bj1-10-115-88-19
10.115.88.20 bj1-10-115-88-20

4.1.3 Konfigurieren Sie den ersten Masterknoten von mgr

Die folgenden Schritte werden in MySQL auf dem Host 10.115.88.18 ausgeführt:

Schritt 1: Erstellen eines Benutzers für die Replikation

setze sql_log_bin=0;
Erstellen Sie den Benutzer repuser@'%', identifiziert durch 'repuser123';

gewähre repuser@'%' Replikations-Slave und Replikations-Client auf *.*;

Erstellen Sie den Benutzer repuser@'127.0.0.1', identifiziert durch 'repuser123';

Gewähren Sie Replikations-Slave, Replikations-Client auf *.* an repuser@'127.0.0.1';

Erstellen Sie den Benutzer repuser@'localhost', identifiziert durch 'repuser123';

gewähre repuser@'localhost' Replikations-Slave und Replikations-Client auf *.*;

setze sql_log_bin=1;

Schritt 2: Konfigurieren des für die Replikation verwendeten Benutzers

Ändern Sie Master in master_user='repuser',master_password='repuser123' für den Kanal 'group_replication_recovery';

Schritt 3: Installieren Sie das MySQL-Gruppenreplikations-Plugin

Hinweis: Wenn Sie plugin_load="group_replication=group_replication.so" in my.cnf schreiben, müssen Sie das Plugin group_replication soname ‚group_replication.so‘ nicht installieren;


Überprüfen Sie anhand der Anzeige der Plugins, ob die Installation erfolgreich war.

Schritt 4: Erstellen Sie eine Gruppe (offiziell handelt es sich dabei um die Initialisierung einer Replikationsgruppe

Setzen Sie die globale group_replication_bootstrap_group=on;
Gruppenreplikation starten;
Setzen Sie die globale group_replication_bootstrap_group=off;

Wählen Sie * aus Performance_schema.Replikationsgruppenmitgliedern;

5. Konfigurieren Sie die anderen beiden Knoten von

Die folgenden Schritte werden in MySQL auf allen Slave-Hosts ausgeführt:

Schritt 1: Erstellen eines Benutzers für die Replikation

setze sql_log_bin=0;
Erstellen Sie den Benutzer repuser@'%', identifiziert durch 'repuser123';

gewähre repuser@'%' Replikations-Slave und Replikations-Client auf *.*;

Erstellen Sie den Benutzer repuser@'127.0.0.1', identifiziert durch 'repuser123';

Gewähren Sie Replikations-Slave, Replikations-Client auf *.* an repuser@'127.0.0.1';

Erstellen Sie den Benutzer repuser@'localhost', identifiziert durch 'repuser123';

gewähre repuser@'localhost' Replikations-Slave und Replikations-Client auf *.*;

setze sql_log_bin=1;

Schritt 2: Konfigurieren des für die Replikation verwendeten Benutzers

Ändern Sie Master in master_user='repuser',master_password='repuser123' für den Kanal 'group_replication_recovery';

Schritt 3: Installieren Sie das MySQL-Gruppenreplikations-Plugin

Hinweis: Wenn Sie plugin_load="group_replication=group_replication.so" in my.cnf schreiben, müssen Sie das Plugin group_replication soname ‚group_replication.so‘ nicht installieren;


Überprüfen Sie anhand der Anzeige der Plugins, ob die Installation erfolgreich war.

Schritt 4: Der zuvor erstellten Replikationsgruppe beitreten

Gruppenreplikation starten;
Wählen Sie * aus Performance_schema.Replikationsgruppenmitgliedern;

Der folgende Fehler tritt auf

Dies ist ein Fehler, der durch Binlog verursacht wird. Führen Sie den folgenden

Master zurücksetzen;
Gruppenreplikation starten;
Wählen Sie * aus Performance_schema.Replikationsgruppenmitgliedern;

Überprüfen Sie den MGR-Status:

Anzeigen des Lese- und Schreibstatus des MGR-Masters

Überprüfen Sie den Lese- und Schreibstatus der beiden Slaves von MGR

Dies ist das Ende dieses Artikels über die Konfiguration von MGR Single Master und Multiple Slaves in MySQL 8.0.15. Weitere relevante Inhalte zu MySQL MGR Single Master und Multiple Slaves 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:
  • Was sind die Vorteile von MySQL MGR?
  • Detaillierte Erläuterung der Wissenspunkte zum Umschalten zwischen MySQL MGR-Einzelmaster- und Multimastermodus
  • mysql 8.0.18 mgr-Installation und seine Umschaltfunktion
  • MySQL 8.0.18 verwendet Klon-Plugin, um die MGR-Implementierung neu zu erstellen
  • Detaillierte Erläuterung der Methode zur Bestimmung des einzelnen Masterknotens von MySQL 5.7 MGR
  • Häufige Probleme und Lösungen beim Erstellen von MySQL MGR

<<:  Detaillierte Erklärung der Docker Compose-Verwendung

>>:  Vue implementiert die Funktion zum Aufrufen der Handykamera und des Albums

Artikel empfehlen

Detaillierte Erklärung, wann Javascript-Skripte ausgeführt werden

JavaScript-Skripte können überall in HTML eingebe...

Vue+Flask realisiert Videosynthesefunktion (Drag & Drop-Upload)

Inhaltsverzeichnis Wir haben in einem früheren Ar...

So erstellen Sie eine virtuelle Maschine mit Vagrant+VirtualBox

1. Einleitung Vagrant ist ein Tool zum Erstellen ...

Vollständiger Schrittbericht zur Vue-Kapselung allgemeiner Tabellenkomponenten

Inhaltsverzeichnis Vorwort Warum müssen wir die T...

Verwenden Sie HTML und CSS, um Ihren eigenen warmen Mann „Dabai“ zu erstellen.

Das Endergebnis sieht so aus, ist es nicht süß … ...

jQuery erzielt Ein- und Ausblendeffekte

Bevor wir jQuery verwenden, um den Ein- und Ausbl...

So entfernen Sie „Enter“, „Senden“ und „Enter != Senden“ aus dem Formular

Um das Problem „Eingeben != Absenden“ zu implement...

Welche Funktion ist !-- -- im HTML-Seitenstil?

Hauptsächlich für Browser mit niedriger Version &l...

Sollten nullbare Felder in MySQL auf NULL oder NOT NULL gesetzt werden?

Personen, die MySQL häufig verwenden, können mit ...

Implementierung eines einfachen Whack-a-Mole-Spiels in JavaScript

In diesem Artikel finden Sie den spezifischen Cod...