Ubuntu erstellt Mysql+Keepalived-Hochverfügbarkeitsimplementierung (Dual-Active Hot Standby)

Ubuntu erstellt Mysql+Keepalived-Hochverfügbarkeitsimplementierung (Dual-Active Hot Standby)

Mysql5.5 Dual-Maschine-Hot-Standby

Durchführung

Installieren Sie zwei Mysql

Installieren Sie MySQL 5.5

sudo apt-get update

apt-get install aptitude
Eignungsinstallation MySQL-Server-5.5
oder sudo apt-cache search mariadb-server
apt-get install -y mariadb-server-5.5

Deinstallieren

sudo apt-get entfernen mysql-*
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

Konfigurieren von Berechtigungen

vim /etc/mysql/my.cnf
#Bind-Adresse = 127.0.0.1

mysql -u root -p
gewähre alles auf *.* an root@'%', identifiziert durch 'root' mit Berechtigungsoption;
Berechtigungen leeren;

Konfigurieren Sie zwei MySQL-Server für die Master-Master-Synchronisierung

Knoten 1 konfigurieren

vim /etc/mysql/my.cnf

Server-ID = 1 #Knoten-ID
log_bin = mysql-bin.log #logbinlog_format = "ROW" #Logformat auto_increment_increment = 2 #ID-Intervall automatisch erhöhen (= Anzahl der Knoten, um ID-Konflikte zu vermeiden)
auto_increment_offset = 1 #Startwert der Auto-Increment-ID (Knoten-ID)
binlog_ignore_db=mysql #Nicht synchronisierte Datenbank binlog_ignore_db=information_schema
binlog_ignore_db=Leistungsschema

Starten Sie MySQL neu

Dienst MySQL Neustart
mysql -u root -p

Notieren Sie die Binlog-Protokollposition von Knoten 1

Masterstatus anzeigen;
mysql-bin.000001 245 mysql, Informationsschema, Leistungsschema

Knoten 2 konfigurieren

vim /etc/mysql/my.cnf

Server-ID = 2
log_bin = mysql-bin.log                    
relay_log = mysql-relay-bin.log #Relay-Protokoll log_slave_updates = ON #Nachdem das Relay-Protokoll ausgeführt wurde, werden die Änderungen im Protokoll aufgezeichnet read_only = 0
binlog_format = "ZEILE"
auto_increment_increment = 2
auto_increment_offset = 2
binlog_ignore_db=mysql
binlog_ignore_db=Informationsschema
binlog_ignore_db=Leistungsschema
replicate_ignore_db=mysql
replicate_ignore_db=Informationsschema
replicate_ignore_db=Leistungsschema

Konfigurieren von Master und Slave

mysql -u root -p

ÄNDERN SIE MASTER IN 
       MASTER_HOST='192.168.1.21', 
       MASTER_USER='root', 
       MASTER_PASSWORD='root', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=245;

#Synchronisation starten, Slave starten

#Überprüfen Sie den Synchronisierungsstatus Slave_IO_Running und Slave_SQL_Running, beide müssen Ja sein       
Slave-Status anzeigen;  

Notieren Sie die Binlog-Protokollposition von Knoten 2

Masterstatus anzeigen;

mysql-bin.000001 1029 mysql, Informationsschema, Leistungsschema

Konfigurieren Sie den Master (Knoten 1)

vim /etc/mysql/my.cnf

relay_log = mysql-relay-bin.log
log_slave_updates = EIN
schreibgeschützt = 0
replicate_ignore_db=mysql
replicate_ignore_db=Informationsschema
replicate_ignore_db=Leistungsschema

Synchronisierung aktivieren

mysql -u root -p

ÄNDERN SIE MASTER IN 
       MASTER_HOST='192.168.1.20', 
       MASTER_USER='root', 
       MASTER_PASSWORD='root', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=1029;

#Synchronisation starten, Slave starten

#Überprüfen Sie den Synchronisierungsstatus Slave_IO_Running und Slave_SQL_Running, beide müssen Ja sein       
Slave-Status anzeigen;

Ausnahmebehandlung

Die Master-Infostruktur konnte nicht initialisiert werden, weitere Fehlermeldungen finden sich im MySQL-Fehlerlog
Lösung: Slave zurücksetzen

Installieren und Konfigurieren von Keepalived

Installieren Sie Keepalived

#Hängt ab von sudo apt-get install -y libssl-dev
sudo apt-get install -y openssl 
sudo apt-get install -y libpopt-dev
sudo apt-get install -y libnl-dev libnl-3-dev libnl-genl-3.dev
apt-get-Installations-Daemon
apt-get installiere libc-dev
apt-get installiere libnfnetlink-dev
apt-get installiere libnl-genl-3.dev

#installieren Sie apt-get install keepalived

#Kompilieren und installieren Sie cd /usr/local
wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz
tar -zxvf keepalived-2.2.2.tar.gz 
mv keepalived-2.2.2 keepalived
./configure --prefix=/usr/local/keepalived
sudo make und make install

#Öffnen Sie das Protokoll sudo vim /etc/rsyslog.d/50-default.conf 

*.=Info;*.=Hinweis;*.=Warnung;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none -/var/log/nachrichten
        
sudo service rsyslog Neustart 
tail -f /var/log/messages

sudo mkdir /etc/sysconfig
sudo cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
sudo cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
sudo cp /usr/local/keepalived/sbin/keepalived /sbin/
sudo mkdir /etc/keepalived
sudo cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

Konfigurieren der Knoteninformationen

Knoten 1 192.168.1.21

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id MYSQL_HA #Aktueller Knotenname}
vrrp_instance VI_1 {    
    Status BACKUP #Beide Konfigurationsknoten sind BACKUP
    Schnittstelle eth0 #Netzwerkschnittstelle zum Binden der virtuellen IP virtual_router_id 51 #VRRP-Gruppenname, die Einstellungen beider Knoten müssen identisch sein, um anzuzeigen, dass jeder Knoten zur selben VRRP-Gruppe gehört Priorität 101 #Priorität des Knotens, ändern Sie die Priorität des anderen Knotens auf eine niedrigere advert_int 1 #Sendeintervall für Multicast-Informationen, die Einstellungen beider Knoten müssen identisch sein nopreempt #Nicht preempten, nur auf Maschinen mit hoher Priorität einstellen und nicht auf Maschinen mit niedriger Priorität einstellen Authentifizierung { #Authentifizierungsinformationen festlegen, beide Knoten müssen konsistent sein auth_type PASS
        Auth_Passwort 123456
    }
    virtual_ipaddress { #Geben Sie die virtuelle IP an, beide Knoten müssen auf die gleiche Adresse eingestellt sein: 192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 { #Konfiguration des virtuellen Linux-Servers (LVS) delay_loop 2 #alle 2 Sekunden den Status des realen Servers prüfen lb_algo wrr #LVS-Planungsalgorithmus, rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR #LVS-Clustermodus, NAT|DR|TUN
    persistence_timeout 60 #Sitzungshaltezeit Protokoll TCP #Ist das verwendete Protokoll TCP oder UDP

    real_server 192.168.1.21 3306 {
        Gewicht 3 #Gewicht notify_down /usr/local/bin/mysql.sh #Skript, das ausgeführt wird, nachdem ein Dienstausfall erkannt wurde TCP_CHECK {
            connect_timeout 10 #Verbindungs-Timeout nb_get_retry 3 #Anzahl der Wiederverbindungen delay_before_retry 3 #Wiederverbindungsintervall connect_port 3306 #Integritätscheck-Port}
    }    
}

Knoten 2 192.168.1.20

vim /etc/keepalived/keepalived.conf

global_defs {
   router_id MYSQL_HA #Aktueller Knotenname}
vrrp_instance VI_1 {
    Status BACKUP #Beide Konfigurationsknoten sind BACKUP
    Schnittstelle eth0 #Netzwerkschnittstelle zum Binden der virtuellen IP virtual_router_id 51 #VRRP-Gruppenname, die Einstellungen beider Knoten müssen identisch sein, um anzuzeigen, dass jeder Knoten zur selben VRRP-Gruppe gehört Priorität 100 #Knotenpriorität, die andere Priorität sollte niedriger sein advert_int 1 #Sendeintervall für Multicast-Informationen, die Einstellungen beider Knoten müssen identisch sein nopreempt #Nicht preempten, nur auf Maschinen mit hoher Priorität einstellen und nicht auf Maschinen mit niedriger Priorität einstellen Authentifizierung { #Authentifizierungsinformationen festlegen, beide Knoten müssen konsistent sein auth_type PASS
        Auth_Passwort 123456
    }
    virtual_ipaddress { #Geben Sie die virtuelle IP an, beide Knoten müssen auf die gleiche Adresse eingestellt sein: 192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 { #Konfiguration des virtuellen Linux-Servers (LVS) delay_loop 2 #alle 2 Sekunden den Status des realen Servers prüfen lb_algo wrr #LVS-Planungsalgorithmus, rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR #LVS-Clustermodus, NAT|DR|TUN
    persistence_timeout 60 #Sitzungshaltezeit Protokoll TCP #Ist das verwendete Protokoll TCP oder UDP

    real_server 192.168.1.20 3306 {
        Gewicht 3 #Gewicht notify_down /usr/local/bin/mysql.sh #Skript, das ausgeführt wird, nachdem ein Dienstausfall erkannt wurde TCP_CHECK {
            connect_timeout 10 #Verbindungs-Timeout nb_get_retry 3 #Anzahl der Wiederverbindungen delay_before_retry 3 #Wiederverbindungsintervall connect_port 3306 #Integritätscheck-Port}
    }
}

Schreiben von Skripten zur Ausnahmebehandlung

vim /usr/local/bin/mysql.sh

#!/bin/sh
alles töten, am Leben bleiben

Zuweisen von Berechtigungen

chmod +x /usr/local/bin/mysql.sh
###Testen Sie den Neustart von Keepalived

Dienst Keepalived Neustart

Protokolle anzeigen

tail -f /var/log/messages

Virtuelle IP anzeigen

IP-Adresse # oder IP a oder ifconfig

#Der Masterknoten hat eine virtuelle IP
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP-Gruppe Standard qlen 1000
    Link/Ether 52:54:9e:17:53:e5 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.1.21/24 brd 192.168.1.255 Bereich global eth0
       valid_lft für immer preferred_lft für immer
    inet 192.168.1.111/32 Bereich global eth0
       valid_lft für immer preferred_lft für immer

Beenden Sie den MySQL-Dienst auf dem Masterknoten.

Dienst MySQL stoppen

Protokollinformationen

#Masterknoten 10. Aug 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: TCP-Verbindung zu [192.168.1.20]:3306 fehlgeschlagen!!!
10. August 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Dienst [192.168.1.20]:3306 wird aus VS [192.168.1.111]:3306 entfernt
10. Aug. 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Ausführen von [/usr/local/bin/mysql.sh] für Dienst [192.168.1.20]:3306 in VS [192.168.1.111]:3306
10. August 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Verlorenes Quorum 1-0=1 > 0 für VS [192.168.1.111]:3306
10. August 15:00:30 i-7jaope92 Keepalived_vrrp[4950]: VRRP_Instance(VI_1) sendet 0 Priorität
10. August 15:00:30 i-7jaope92 Kernel: [100918.976041] IPVS: __ip_vs_del_service: eingeben

#Slave-Knoten Aug 10 15:00:31 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) Übergang in den MASTER-STATUS
10. Aug 15:00:32 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) wechselt in den MASTER STATE

Die virtuelle IP wandert vom Master-Knoten zum Slave-Knoten

IP-Adresse

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast Status UP-Gruppe Standard qlen 1000
    Link/Ether 52:54:9e:e7:26:5c brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 Bereich global eth0
       valid_lft für immer preferred_lft für immer
    inet 192.168.1.111/32 Bereich global eth0
       valid_lft für immer preferred_lft für immer

Mysql-Verbindungstest

mysql -h 192.168.1.111 -u root -p 

Dies ist das Ende dieses Artikels zum Erstellen von MySQL + Keepalived-Hochverfügbarkeit auf Ubuntu (Dual-Active Hot Standby). Weitere verwandte Inhalte zu MySQL + Keepalived-Hochverfügbarkeit finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Keepalived+HAProxy zur Implementierung einer MySQL-Konfiguration für den hochverfügbaren Lastenausgleich
  • Tutorial zur Verwendung von HAProxy zum Erkennen von MySQL-Replikationsverzögerungen
  • MySQL Master-Slave-Konfiguration und Analyse des Haproxy- und Keepalived-Konstruktionsprozesses

<<:  HTML-Framework_Powernode Java Academy

>>:  Eine allgemeine Methode zur Implementierung eines unendlichen Textkarussells mit nativem CSS

Artikel empfehlen

Zusammenfassung der Wissenspunkte zu MySQL-Index, Sperre und Transaktion

Dieser Artikel fasst die Wissenspunkte zu MySql-I...

Techniken zur Optimierung von MySQL-Paging-Abfragen

In Anwendungen mit Paging-Abfragen sind Abfragen,...

CSS3 erzielt verschiedene Randeffekte

Durchscheinender Rand Ergebnis: Implementierungsc...

Detaillierte Erläuterung des Grafikbeispiels für Vue-Überwachungsattribute

Inhaltsverzeichnis Was ist die Listener-Eigenscha...

Fünf Möglichkeiten zum automatischen Seitensprung in HTML

Im vorherigen Artikel haben wir drei gängige Meth...

Detaillierter Prozess zum Upgrade von gcc (Version 10.2.0) in der CentOS7-Umgebung

Inhaltsverzeichnis Kurze Einleitung 1. Überprüfen...

Vue implementiert Baumtabelle

In diesem Artikelbeispiel wird der spezifische Co...

So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

1. Ändern Sie die Firewall-Einstellungen und öffn...

Natives JS zum Erzielen eines coolen Paging-Effekts

In diesem Artikel wird anhand eines Beispiels ein...

Mysql behält den vorhandenen Inhalt bei und fügt später Inhalte hinzu

Dieser Befehl ändert die Datentabelle ff_vod und ...

So erstellen Sie Ihre erste React-Seite

Inhaltsverzeichnis Was ist Rract? Hintergrund Rea...

CentOS 7-Konfiguration Tomcat9+MySQL-Lösung

Tomcat konfigurieren Installieren Sie zuerst Tomc...