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: 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:
|
<<: Detaillierte Erklärung der Docker Compose-Verwendung
>>: Vue implementiert die Funktion zum Aufrufen der Handykamera und des Albums
Ich habe vor, eine Reihe von Haftnotizwänden zu r...
JavaScript-Skripte können überall in HTML eingebe...
Inhaltsverzeichnis Wir haben in einem früheren Ar...
1. Einleitung Vagrant ist ein Tool zum Erstellen ...
Inhaltsverzeichnis Vorwort Warum müssen wir die T...
Das Endergebnis sieht so aus, ist es nicht süß … ...
Inhaltsverzeichnis 1. Einweg-Wertübertragung zwis...
Bevor wir jQuery verwenden, um den Ein- und Ausbl...
Inhaltsverzeichnis Hauptsächlich verwendete Postm...
Heute habe ich eine Fallstudie zur MySQL IN-Unter...
Um das Problem „Eingeben != Absenden“ zu implement...
HTML-Bild erzeugt nach dem Hinzufügen eines Hyper...
Hauptsächlich für Browser mit niedriger Version &l...
Personen, die MySQL häufig verwenden, können mit ...
In diesem Artikel finden Sie den spezifischen Cod...