Konzept MMM (Master-Master-Replikationsmanager für MySQL) ist ein flexibles Skriptprogramm auf Perl-Basis, das zum Überwachen und Failover der MySQL-Replikation sowie zur Verwaltung der Konfiguration der MySQL Master-Master-Replikation (nur ein Knoten ist gleichzeitig beschreibbar) verwendet wird. Beschreibung der MMM-Hochverfügbarkeitsarchitektur
Vor- und Nachteile von MMM Vorteile: Hohe Verfügbarkeit, gute Skalierbarkeit, automatische Umschaltung im Fehlerfall und bei der Master-Master-Synchronisation ist nur ein Datenbank-Schreibvorgang gleichzeitig erforderlich, um die Datenkonsistenz sicherzustellen. Bereitstellung einer experimentellen Umgebung Schritt 1: Installieren Sie die MySQL-Datenbank auf allen vier Servern 1. Konfigurieren Sie die ALI-Cloud-Quelle und installieren Sie dann die epel-release-Quelle [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# yum -y installiere epel-release [root@localhost ~]# yum alles bereinigen && yum makecache 2. Erstellen Sie eine lokale Yum-Quelle #Installieren Sie die Datenbank [root@localhost ~]# yum -y install mariadb-server mariadb #Firewall und Sicherheitsfunktionen deaktivieren [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 #Öffnen Sie die Datenbank [root@localhost ~]# systemctl start mariadb.service 3. Ändern Sie die ml-Hauptkonfigurationsdatei [root@localhost ~]# vim /etc/my.cnf #Löschen Sie die ersten 9 Zeilen und fügen Sie den folgenden Inhalt hinzu [mysqld] log_error=/var/lib/mysql/mysql.err #Dateispeicherort des Fehlerloglog=/var/lib/mysql/mysql_log.log #Dateispeicherort des Zugriffsloglog_slow_queries=/var/lib/mysql_slow_queris.log #Dateispeicherort des Man-Logbinlog-ignore-db=mysql,information_schema #mysql,information_schema generiert keine binären Logdateiencharacter_set_server=utf8 #Zeichensatzlog_bin=mysql_bin #Funktion für binäre Logdatei aktiviertserver_id=1 #Unterschiedliche Host-IDs sind unterschiedlichlog_slave_updates=true #Autorisierungssynchronisierungsync_binlog=1 #Funktion für binäre Logdatei aktiviertauto_increment_increment=2 #Automatische Inkrementierungauto_increment_offset=1 #Startwert[root@localhost ~]# systemctl mariadb.service neu starten [root@localhost ~]# netstat -natp | grep 3306 4. Kopieren Sie die Konfigurationsdatei auf die anderen drei Datenbankserver und achten Sie darauf, die Server-ID zu ändern [root@localhost ~]# scp /etc/my.cnf [email protected]:etc/ 5. Rufen Sie die Datenbank auf und zeigen Sie die Protokolldateiinformationen an [root@localhost ~]# mysql #Zeigen Sie den Protokolldateinamen und den Positionswert an MariaDB [(keine)]> show master status; +------------------+----------+--------------+--------------------------+ | Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+--------------------------+ | mysql_bin.000001 | 245| | mysql,Informationsschema | +------------------+----------+--------------+--------------------------+ 1 Zeile im Satz (0,00 Sek.) 6. Erteilen Sie sich gegenseitig Zugriffsberechtigungen auf m1 und m2 und autorisieren Sie Synchronisierungsprotokolle #Geben Sie sich gegenseitig Zugriffsberechtigungen für m1 und m2MariaDB [(keine)]> gewähren Sie Replikations-Slave auf *.* an „Replikation“@„192.168.142.%“, identifiziert durch „123456“; #Geben Sie den Protokolldateinamen und die Positionsparameter von m2 auf m1MariaDB an [(keine)]> ändern Sie Master in master_host='192.168.142.134',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=245; #Geben Sie den Protokolldateinamen und die Positionsparameter von m1 auf m2MariaDB an [(keine)]> ändern Sie Master in master_host='192.168.142.131',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=245; 7. Aktivieren Sie die Synchronisierung auf m1 MariaDB [(keine)]> Slave starten; 8. Überprüfen Sie den Synchronisierungsstatus. Auf beiden Master-Servern sollte „Ja“ angezeigt werden. MariaDB [(keine)]> Slave-Status anzeigen\G; Slave_IO_Running: Ja Slave_SQL_Running: Ja 9. Erstellen Sie eine Datenbank auf m1 MariaDB [(keine)]> Datenbankschule erstellen; 10. Zeigen Sie die synchronisierte Datenbank auf m2 an MariaDB [(keine)]> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | | Schule | | Prüfung | +--------------------+ 5 Zeilen im Satz (0,00 Sek.) 11. Führen Sie dies auf beiden Slaves durch. Beachten Sie die Änderungen in der Protokolldatei und den Positionsparametern (beide zeigen auf m1). MariaDB [(keine)]> ändere Master in master_host='192.168.142.131',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=245; 12. Synchronisation aktivieren MariaDB [(keine)]> Slave starten; #Informationen zu den Synchronisierungsdaten auf dem Slave-Server MariaDB anzeigen [(keine)]> Datenbanken anzeigen; +--------------------+ | Datenbank | +--------------------+ | Informationsschema | |mysql | | Leistungsschema | | Schule | | Prüfung | +--------------------+ 5 Zeilen im Satz (0,00 Sek.) 13. Installieren Sie MMM-bezogene Software auf vier Servern [root@localhost ~]# yum -y install mysql-mmm* 14. Konfigurieren Sie die Konfigurationsdatei mmm_common.conf [root@localhost ~]# vim /etc/mysql-mmm/mmm_common.conf <Host-Standard> #Ändern Sie die Netzwerkkarte auf ens33 Clusterschnittstelle ens33 pid_pfad /run/mysql-mmm-agent.pid bin_pfad /usr/libexec/mysql-mmm/ Replikation_Benutzerreplikation #Ändern Sie das Autorisierungskennwort replication_password 123456 agent_user mmm_agent #Ändern Sie das Agentenautorisierungskennwort agent_password 123456 </host> #Geben Sie die Rollen und IP-Adressen der vier Server <host db1> an IP-Adresse 192.168.142.131 Modus Master Peer-DB2 </host> <Host db2> IP-Adresse 192.168.142.134 Modus Master Peer-DB1 </host> <Host db3> IP-Adresse 192.168.142.130 Modus Slave </host> <Host db4> IP-Adresse 192.168.142.135 Modus Slave </host> #Legen Sie die virtuelle IP des Hauptservers fest <Rollenautor> Hosts db1, db2 ips 192.168.142.250 Modus exklusiv </Rolle> #Stellen Sie die virtuelle IP des Slave-Servers ein <Rollenleser> Hosts db3, db4 ips 192.168.142.251, 192.168.142.252 Modus ausgeglichen </Rolle> 15. Kopieren Sie die Konfigurationsdatei von m1 auf die anderen drei Server [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf [root@localhost ~]# scp mmm_common.conf/mmm_common.conf [email protected]:/etc/mysql-mmm/mmm_common.conf Schritt 2: Konfigurieren des Monitorservers 1. Installieren Sie die Epel-Release-Quelle und die MMM-bezogene Software [root@localhost ~]# systemctl stoppe firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@localhost ~]# yum -y installiere epel-release [root@localhost ~]# yum alles bereinigen && yum makecache [root@localhost ~]# yum -y install mysql-mmm* 2. Kopieren Sie die Konfigurationsdatei von m1 auf den Überwachungsserver [root@localhost ~]# scp mmm_common.conf [email protected]:/etc/mysql-mmm/ 3. Konfigurieren Sie die Konfigurationsdatei mmm_common.conf [root@localhost ~]# vim /etc/mysql-mmm/mmm_mon.conf <Monitor> IP-Adresse 127.0.0.1 pid_pfad /run/mysql-mmm-monitor.pid bin_pfad /usr/libexec/mysql-mmm Statuspfad /var/lib/mysql-mmm/mmm_mond.status #Ping_ips zeigt auf die IP-Adressen der vier Server 192.168.142.131,192.168.142.134,192.168.142.130,192.168.142.135 auto_set_online 10 4. Autorisieren Sie mmm_agent auf allen Datenbankservern MariaDB [(keine)]> gewährt Super, Replikationsclient, Prozess auf *.* an 'mmm_agent'@'192.168.142.%', identifiziert durch '123456'; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) 5. Autorisieren Sie mmm_moniter auf allen Datenbankservern MariaDB [(keine)]> gewährt Replikationsclient auf *.* an 'mmm_monitor'@'192.168.18.%', identifiziert durch '123456'; Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) 6. Aktualisieren Sie die Datenbank und legen Sie den Proxy-Namen auf allen Datenbankservern fest [root@localhost ~]# vim /etc/mysql-mmm/mmm_agent.conf #Ändern Sie die Agentenkonfigurationsdatei #m1 Standardname this db1 #Der Name dieser db2 in m2 #s1 nenne dieses db3 #s2 nenne dies db4 7. Aktivieren Sie die Proxy-Funktion auf allen Datenbankservern und stellen Sie sie so ein, dass sie beim Booten automatisch gestartet wird #Starten Sie die Agentenfunktion [root@localhost ~]# systemctl start mysql-mmm-agent.service #Automatischen Start einrichten [root@localhost ~]# systemctl enable mysql-mmm-agent.service 8. Starten Sie den Überwachungsdienst auf dem Überwachungsserver und überprüfen Sie den Status jedes Knotens [root@localhost mysql-mmm]# systemctl start mysql-mmm-monitor.service [root@localhost ~]# mmm_control anzeigen db1(192.168.142.131) Master/ONLINE. Rollen: Writer(192.168.142.250) db2(192.168.142.134) master/ONLINE. Rollen: db3(192.168.142.130) Slave/ONLINE. Rollen: Leser(192.168.142.252) db4(192.168.142.135) Slave/ONLINE. Rollen: Leser(192.168.142.251) 9. Überprüfen Sie den Status aller Server [root@localhost ~]# mmm_control prüft alle db4 ping [letzte Änderung: 25.11.2019 18:23:03] OK db4 mysql [letzte Änderung: 2019/11/25 18:23:03] OK db4 rep_threads [letzte Änderung: 2019/11/25 18:23:03] OK db4 rep_backlog [letzte Änderung: 2019/11/25 18:23:03] OK: Backlog ist null db2 ping [letzte Änderung: 2019/11/25 18:23:03] OK db2 mysql [letzte Änderung: 2019/11/25 18:59:01] OK db2 rep_threads [letzte Änderung: 2019/11/25 18:59:01] OK db2 rep_backlog [letzte Änderung: 2019/11/25 18:59:01] OK: Backlog ist null db3 ping [letzte Änderung: 25.11.2019 18:23:03] OK db3 mysql [letzte Änderung: 2019/11/25 18:59:01] OK db3 rep_threads [letzte Änderung: 2019/11/25 18:59:01] OK db3 rep_backlog [letzte Änderung: 2019/11/25 18:59:01] OK: Backlog ist null db1 ping [letzte Änderung: 25.11.2019 18:23:03] OK db1 mysql [letzte Änderung: 2019/11/25 18:59:01] OK db1 rep_threads [letzte Änderung: 2019/11/25 18:59:01] OK db1 rep_backlog [letzte Änderung: 2019/11/25 18:59:01] OK: Backlog ist null Drittens, Fehlerprüfung 1. Simulieren Sie die Ausfallzeit des M1-Servers und stoppen Sie den Dienst [root@localhost ~]# systemctl stop mariadb.service 2. Wenn der m1-Server ausfällt, erhält m2 die virtuelle IP und stellt weiterhin Dienste bereit [root@localhost ~]# mmm_control anzeigen db1(192.168.142.131) master/ONLINE. Rollen: db2(192.168.142.134) Master/ONLINE. Rollen: Writer(192.168.142.250) db3(192.168.142.130) Slave/ONLINE. Rollen: Leser(192.168.142.252) db4(192.168.142.135) Slave/ONLINE. Rollen: Leser(192.168.142.251) 3. Wenn der S1-Server ausfällt, erhält S2 die virtuelle IP und stellt weiterhin Dienste bereit [root@localhost ~]# mmm_control show db1(192.168.142.131) master/ONLINE. Rollen: writer(192.168.142.250) db2(192.168.142.134) master/ONLINE. Rollen: db3(192.168.142.130) slave/HARD_OFFLINE. Rollen: db4(192.168.142.135) Slave/ONLINE. Rollen: Leser(192.168.142.251), Leser(192.168.142.252 4. Autorisieren Sie die Anmeldung für die Überwachungsserveradresse auf dem m1-Server MariaDB [(keine)]> gewähre alles auf *.* an „root“@„192.168.142.136“, identifiziert durch „123456“; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) 5. Installieren Sie den Datenbank-Client auf dem Überwachungsserver [root@localhost ~]# yum -y installiere MariaDB 6. Melden Sie sich mit dem angegebenen Benutzer bei der Datenbank auf dem Überwachungsserver an und erstellen Sie Dateninformationen [root@localhost ~]# mysql -u root -p -h 192.168.142.250 Passwort eingeben: #Geben Sie das Passwort ein#Erstellen Sie eine Datenbank MariaDB [(keine)]> create database BDQN; Abfrage OK, 1 Zeile betroffen (0,01 Sek.) 7. Zeitlich synchronisierte Dateninformationen können in allen Datenbanken angezeigt werden MariaDB [(keine)]> Datenbanken anzeigen; #Datenbanken anzeigen+--------------------+ | Datenbank | +--------------------+ | Informationsschema | | BDQN | #Mit BDQN-Datenbank synchronisieren | mysql | | Leistungsschema | | Schule | | Prüfung | +--------------------+ 6 Zeilen im Satz (0,00 Sek.) Die MMM-Clusterarchitektur ist nun vollständig. Vielen Dank fürs Lesen!!! Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Initialisierungsmechanismus in Bash
>>: Vue2.x-Reaktionsfähigkeit – einfache Erklärung und Beispiele
Vim ist ein leistungsstarker Vollbild-Texteditor ...
Vorwort Die Projektanforderung besteht darin, fes...
Inhaltsverzeichnis 1. Einige Konzepte, die Sie vo...
MySQL-Abfrage-Steueranweisungen Felddeduplizierun...
Super ausführliches Tutorial zur Installation und...
Eine At-Regel ist eine Deklaration, die Anweisung...
v-model ist eine Vue-Direktive, die eine bidirek...
Inhaltsverzeichnis Erster Schritt der Installatio...
Inhaltsverzeichnis Zunächst müssen Sie wissen, da...
In diesem Artikel wird der spezifische Code von j...
Bei jedem Start von Tomcat werden die folgenden P...
Daten initialisieren Tabelle löschen, wenn `test_...
In Google Chrome werden Sie nach der erfolgreiche...
Eine einfache Nummernschild-Eingabekomponente (vu...
Grundlegende Netzwerkkonfiguration Obwohl Docker ...