Bereitstellung eines MySQL-Hochverfügbarkeitsclusters und Implementierung eines Failovers

Bereitstellung eines MySQL-Hochverfügbarkeitsclusters und Implementierung eines Failovers

1. MHA

1. Konzept

Bildbeschreibung hier einfügen

2. Zusammensetzung von MHA

Bildbeschreibung hier einfügen

3. Eigenschaften von MHA

Bildbeschreibung hier einfügen

2. MySQL+MHA erstellen

Ideen und Vorbereitungen

1. MHA-Architektur-Datenbankinstallation mit einem Master und zwei Slaves
MHA-Bau

2. Fehlersimulation: Der Ausfall der Primärdatenbank wird simuliert. Die Backup-Primärdatenbank wird zur Primärdatenbank. Die ursprünglich ausgefallene Primärdatenbank wird wiederhergestellt und wieder mit MHA verbunden, um eine Slave-Datenbank zu werden.

3. Bereiten Sie 4 virtuelle Maschinen für die Installation von MySQL vor
MHA-Hochverfügbarkeitscluster-bezogene Softwarepakete
MHAmanager IP: 192.168.221.30
MySQL1 IP: 192.168.221.20
MySQL2 IP: 192.168.221.100
MySQL3 IP: 192.168.221.110

Bildbeschreibung hier einfügen

1. Schalten Sie die Firewall aus und prüfen Sie, ob der Port geöffnet ist

systemctl stoppe Firewall
systemctl deaktiviert Firewall
0
netstat -natp | grep 3306

Bildbeschreibung hier einfügen

2. Ändern Sie den Hostnamen des MySQL-Knotens

mysql1 (192.168.221.20)

hostnamectl set-hostname mysql1
so-
hostnamectl set-hostname mysql2
so-
hostnamectl set-hostname mysql3
so-

Bildbeschreibung hier einfügen

3. Ändern Sie die Hauptkonfigurationsdatei /etc/my.cnf der drei MySQL-Server und erstellen Sie einen Befehls-Softlink

MySQL1
vim /etc/meine.cnf
[mysqld]
Server-ID = 1
log_bin = Master-Bin
log-slave-updates = wahr

systemctl startet mysqld neu
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

MySQL2
vim /etc/meine.cnf
Server-ID = 2  
#server-id = 3 MySQL3 ist 3, die Server-IDs der drei Server können nicht gleich sein log_bin = master-bin
Relais-Protokoll = Relais-Protokoll-Bin
Relais-Log-Index = Slave-Relay-Bin.Index
systemctl startet mysqld neu

ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

4. Konfigurieren Sie MySQL mit einem Master und zwei Slaves

(1) Alle MySQL-Server führen eine MySQL-Autorisierung durch mysql1 (192.168.221.20)
mysql2 (192.168.221.100)
mysql3 (192.168.221.110)

Alle drei Maschinen müssen mysql -uroot -p123 konfigurieren
gewähre 'myslave'@'192.168.221.%' Replikations-Slave auf *.*, identifiziert durch '123';
gewähre 'mha'@'192.168.221.%', identifiziert durch 'Manager', alle Privilegien für *.*;
Gewähren Sie 'mha'@'mysql1', identifiziert durch 'manager', alle Berechtigungen für *.*.
Gewähren Sie alle Berechtigungen für *.* an „mha“@„mysql2“, identifiziert durch „Manager“.
Gewähren Sie alle Berechtigungen für *.* an „mha“@„mysql3“, identifiziert durch „Manager“.
Berechtigungen leeren;
Masterstatus anzeigen;

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

(2) Führen Sie Synchronisierungsvorgänge an den Knoten Slave1 und Slave2 durch: Ändern Sie den Master in master_host='192.168.221.20',master_user='myslave',master_password='123',master_log_file='master-bin.000005',master_log_pos=1991;

Slave starten;

Slave-Status anzeigen\G
Slave_IO_Running: Ja
Slave_SQL_Running: Ja

#Allgemeine Möglichkeiten für Slave_IO_Running: Nein:
#Netzwerk funktioniert nicht#my.cnf-Konfigurationsproblem#Passwort, Dateiname, POS-Offset sind falsch#Firewall ist nicht geschlossen 

Bildbeschreibung hier einfügen

(3) Die Knoten Slave1 und Slave2 sind auf den Nur-Lese-Modus mysql2 (192.168.221.100) eingestellt.
mysql3 (192.168.221.110)

setze global schreibgeschützt=1;
#Zurück zum Lese-/Schreibstatus wechseln, global read_only=0 setzen;

Bildbeschreibung hier einfügen

(4) Überprüfung der Master-Slave-Replikation mysql1 (192.168.221.20)
Datenbank erstellen, Datenbank erstellen srs;
Test verwenden;
Tabellentest erstellen (ID int);
in Testwerte einfügen(1);

mysql2 (192.168.221.100)
mysql3 (192.168.221.110)
Abfrage der Datenbank, um die Anzeigedatenbanken zu überprüfen.

Bildbeschreibung hier einfügen

5. Installieren Sie die MHA-Software

(1) MHA-abhängige Umgebung MHAmanager (192.168.221.30) ist auf allen Servern installiert
mysql1 (192.168.221.20)
mysql2 (192.168.221.100)
mysql3 (192.168.221.110)

Installieren Sie zuerst die Epel-Quelle, wofür eine Online-Quellinstallation erforderlich ist, und installieren Sie dann die Knotenkomponente auf allen Servern. #Online-Quelle installieren mv /etc/yum.repos.d/repos.bak/CentOS-* /etc/yum.repos.d/
Yum-Liste

yum installiere epel-release --nogpgcheck -y

yum install -y perl-DBD-MySQL \
perl-Konfiguration-Tiny \
perl-Log-Versand \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl - CPAN

Bildbeschreibung hier einfügen

(2) Alle Server installieren das MHA-Node-Softwarepaket MHAmanager (192.168.221.30)
mysql1 (192.168.221.20)
mysql2 (192.168.221.100)
mysql3 (192.168.221.110)

Bei jeder Betriebssystemversion ist es anders. Hier muss CentOS7.4 die Version 0.57 wählen.
Die Knotenkomponente muss zuerst auf allen Servern installiert werden und die Managerkomponente muss zuletzt auf dem MHA-Managerknoten installiert werden, da der Manager von der Knotenkomponente abhängt.
#Legen Sie das Softwarepaket mha4mysql-node-0.57.tar.gz in das Verzeichnis /opt cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL
machen && machen installieren

Installieren Sie die Manager-Komponente auf dem MHA-Manager-Knoten. Legen Sie das Paket mha4mysql-manager-0.57.tar.gz in das Verzeichnis /opt. cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
machen && machen installieren
#Nachdem die Knotenkomponente installiert wurde, werden mehrere Skripte unter /usr/local/bin generiert (diese Tools werden normalerweise durch das MHAManager-Skript ausgelöst und erfordern keine manuelle Bedienung).
#Nachdem die Managerkomponente installiert wurde, werden mehrere Tools unter /usr/local/bin generiert 

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

6. Konfigurieren Sie die kennwortlose Authentifizierung auf allen Servern

(1) Konfigurieren Sie die passwortfreie Authentifizierung MHAmanager (192.168.221.30) für alle Datenbankknoten auf dem Managerknoten

ssh-keygen -t rsa #Drücken Sie die Eingabetaste vollständig ssh-copy-id 192.168.221.20
SSH-Kopie-ID 192.168.221.100
SSH-Kopie-ID 192.168.221.110

(2) Konfigurieren Sie die passwortfreie Authentifizierung auf mysql1 für die Datenbankknoten mysql2 und mysql3 mit ssh-keygen -t rsa
mysql1 (192.168.221.20)

ssh-keygen -t rsa
SSH-Kopie-ID 192.168.221.100
SSH-Kopie-ID 192.168.221.110

(3) Konfigurieren Sie auf mysql2 eine passwortfreie Authentifizierung für die Datenbankknoten mysql1 und mysql3. mysql2 (192.168.221.100)

ssh-keygen -t rsa
SSH-Kopie-ID 192.168.221.20
SSH-Kopie-ID 192.168.221.110

(4) Konfigurieren Sie auf mysql3 eine kennwortfreie Authentifizierung für die Datenbankknoten mysql1 und mysql2. mysql3 (192.168.221.110)

ssh-keygen -t rsa
SSH-Kopie-ID 192.168.221.20
SSH-Kopie-ID 192.168.221.100
Der Artikel ist zu lang und wird nicht angezeigt 

Bildbeschreibung hier einfügen

7. Konfigurieren Sie MHA auf dem Managerknoten

MHAmanager (192.168.221.30)
(1) Kopieren Sie die relevanten Skripte in das Verzeichnis /usr/local/bin auf dem Manager-Knoten: cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin

#Nach dem Kopieren gibt es vier ausführbare Dateien ll /usr/local/bin/scripts/

(2) Kopieren Sie das obige VIP-Verwaltungsskript für die automatische Umschaltung in das Verzeichnis /usr/local/bin. Hier wird das Skript master_ip_failover zur Verwaltung von VIP und Failover verwendet. cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

# Löschen Sie zuerst den ursprünglichen Inhalt echo '' > /usr/local/bin/master_ip_failover

#VIP-bezogene Parameter direkt kopieren und ändern vim /usr/local/bin/master_ip_failover
#!/usr/bin/env perl
streng verwenden;
Warnungen verwenden FATAL => 'alle';

verwenden Sie Getopt::Long;

Mein
$Befehl, $ssh_user, $orig_master_host, $orig_master_ip,
$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
#########################################Inhaltsabschnitt hinzufügen#######################################
my $vip = '192.168.221.200'; #Geben Sie die Adresse von vipmy an $brdc = '192.168.221.255'; #Geben Sie die Broadcast-Adresse von vipmy an $ifdev = 'ens33'; #Geben Sie die an vipmy gebundene Netzwerkkarte an $key = '1'; #Geben Sie die Seriennummer der an vipmy gebundenen virtuellen Netzwerkkarte an $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #Stellt dar, dass der Wert dieser Variable ifconfig ens33:1 192.168.221.200 ist
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #Dieser Variablenwert ist ifconfig ens33:1 down
my $exit_code = 0; #Geben Sie den Exit-Statuscode als 0 an
#my $ssh_start_vip = "/usr/sbin/ip-Adresse hinzufügen $vip/24 brd $brdc dev $ifdev Label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;";
#my $ssh_stop_vip = "/usr/sbin/ip-Adresse del $vip/24 dev $ifdev label $ifdev:$key";
##################################################################################
GetOptions(
'Befehl=s' => \$Befehl,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i' => \$orig_master_port,
'neuer_master_host=s' => \$neuer_master_host,
'neue_Master-IP=s' => \$neue_Master-IP,
'neuer_Masterport=i' => \$neuer_Masterport,
);

beenden &main();

Unterhaupt {

drucken "\n\nIM SKRIPTTEST====$ssh_stop_vip==$ssh_start_vip===\n\n";

wenn ( $command eq "stop" || $command eq "stopssh" ) {

mein $exit_code = 1;
auswerten {
print "Deaktivieren des VIP auf dem alten Master: $orig_master_host \n";
&stop_vip();
$exit_code = 0;
};
wenn ($@) {
warnen "Fehler aufgetreten: $@\n";
beenden $exit_code;
}
beenden $exit_code;
}
elsif ( $Befehl gleich "start" ) {

mein $exit_code = 10;
auswerten {
print "Aktivieren des VIP - $vip auf dem neuen Master - $new_master_host \n";
&start_vip();
$exit_code = 0;
};
wenn ($@) {
warnen $@;
beenden $exit_code;
}
beenden $exit_code;
}
elsif ( $Befehl gleich "Status" ) {
print "Überprüfe den Status des Skripts.. OK \n";
Ausgang 0;
}
anders {
&Verwendung();
Ausgang 1;
}
}
unter start_vip() {
`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
## Ein einfacher Systemaufruf, der das VIP auf dem old_master deaktiviert
unter stop_vip() {
`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}

Unterverwendung {
drucken
"Verwendung: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=Host --orig_master_ip=IP --orig_master_port=Port --new_master_host=Host --new_master_ip=IP --new_master_port=Port\n";
}

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

mkdir /etc/masterha
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha
echo '' > /etc/masterha/app1.cnf
vim /etc/masterha/app1.cnf
[Serverstandard]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/usr/local/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
Benutzer=mha
Passwort=Manager
Ping-Intervall = 1
remote_workdir=/tmp
repl_user=meinSlave
repl_password=123
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.221.100 -s 192.168.221.110
shutdown_script=""
ssh_user=root

[Server1]
Hostname = 192.168.221.20
Port = 3306

[Server2]
Kandidat_Master = 1
check_repl_delay=0
Hostname = 192.168.221.100
Port = 3306

[server3]
Hostname = 192.168.221.110
Port = 3306

#--------------------------Erläuterung der Konfigurationsdatei--------------------------------------------------------------------------
[Serverstandard]
manager_log=/var/log/masterha/app1/manager.log #Manager-Protokoll manager_workdir=/var/log/masterha/app1.log #Manager-Arbeitsverzeichnis master_binlog_dir=/usr/local/mysql/data/ #Der Speicherort, an dem der Master das Binärprotokoll speichert. Der Pfad hier muss mit dem Pfad des im Master konfigurierten Binärprotokolls übereinstimmen, damit MHA es finden kann master_ip_failover_script=/usr/local/bin/master_ip_failover #Legen Sie das Umschaltskript für automatisches Failover fest, das ist das obige Skript master_ip_online_change_script=/usr/local/bin/master_ip_online_change #Legen Sie das Umschaltskript für manuelles Umschalten fest user=mha #Legen Sie den Überwachungsbenutzer root fest
password=manager #Legen Sie das Passwort des Root-Benutzers in MySQL fest. Dieses Passwort ist das Passwort des im vorherigen Artikel erstellten Überwachungsbenutzers. ping_interval=1 #Legen Sie die Hauptdatenbank der Überwachung fest. Das Intervall zum Senden von Ping-Paketen beträgt 1 Sekunde. Der Standardwert beträgt 3 Sekunden. Wenn nach drei Versuchen keine Antwort erfolgt, wird automatisch ein Failover durchgeführt.
remote_workdir=/tmp #Legen Sie den Speicherort fest, an dem das Remote-MySQL-Binlog beim Umschalten gespeichert wird repl_user=myslave #Legen Sie den Benutzer des Replikationsbenutzers fest repl_password=123 #Legen Sie das Kennwort des Replikationsbenutzers fest report_script=/usr/local/send_report #Legen Sie das Skript zum Senden von Alarmen nach dem Umschalten fest secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.221.100 -s 192.168.221.110 #Geben Sie die IP-Adresse des zu überprüfenden Slave-Servers an shutdown_script="" #Legen Sie das Skript zum Herunterfahren des fehlerhaften Hosts nach einem Fehler fest (die Hauptfunktion dieses Skripts besteht darin, den Host herunterzufahren, um einen Brain Split zu verhindern, der hier nicht verwendet wird)
ssh_user=root #Legen Sie den SSH-Anmeldebenutzernamen fest [server1]
Hostname = 192.168.221.20
Port = 3306

[Server2]
Hostname = 192.168.221.100
Port = 3306
Kandidat_Master = 1
#Auf Kandidatenmaster setzen. Nach dem Setzen dieses Parameters wird die Slave-Datenbank nach dem Master-Slave-Wechsel zur Master-Datenbank befördert, auch wenn die Master-Datenbank nicht der neueste Slave im Cluster ist
check_repl_delay=0
#Wenn ein Slave mehr als 100 Millionen Relay-Logs hinter dem Master zurückliegt, wählt MHA den Slave standardmäßig nicht als neuen Master aus, da die Wiederherstellung des Slaves sehr lange dauert. Durch Festlegen von check_repl_delay=0 veranlasst MHA den Switch, die Replikationsverzögerung bei der Auswahl eines neuen Masters zu ignorieren. Dieser Parameter ist für Hosts mit candidates_master=1 sehr nützlich, da der Masterkandidat während des Switches der neue Master sein muss.

[server3]
Hostname = 192.168.221.110
Port = 3306

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

8. Die erste Konfiguration erfordert die manuelle Aktivierung der virtuellen IP auf dem Masterknoten

Meister (192.168.221.20)

/sbin/ifconfig ens33:1 192.168.221.200/24

Bildbeschreibung hier einfügen

9. Test auf dem Manager-Knoten

(1) Testen Sie die passwortlose SSH-Authentifizierung auf dem Managerknoten MHAmanager (192.168.221.30).

masterha_check_ssh -conf=/etc/masterha/app1.cnf
#Wenn alles gut geht, ist die Endausgabe erfolgreich;
#Wenn dies fehlschlägt, können Sie ohne Kennwortauthentifizierung zur Serverkonfiguration gehen, um zu prüfen, ob ein Problem vorliegt. (2) Testen Sie die MySQL-Master-Slave-Verbindung auf dem Managerknoten. MHAmanager (192.168.221.30)
masterha_check_repl -conf=/etc/masterha/app1.cnf
#Am Ende wird die Meldung „MySQL Replication Health is OK“ angezeigt, die anzeigt, dass alles normal ist.
#Wenn die Meldung „MySQL Replication Health is NOT OK!“ erscheint, können Sie überprüfen, ob der Softlink auf dem MySQL-Server fehlt. --> Dieser Artikel befindet sich unter: 2. Ändern Sie die Hauptkonfigurationsdatei /etc/my.cnf der drei MySQL-Server und erstellen Sie einen Befehls-Softlink (3) Starten Sie MHA auf dem Manager-Knoten
MHAmanager (192.168.221.30)
nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &
#------------------------Komponentenerklärung-------------------------------------------------------------------
--remove_dead_master_conf: Dieser Parameter bedeutet, dass bei einem Master-Slave-Wechsel die IP-Adresse der alten Master-Datenbank aus der Konfigurationsdatei entfernt wird.
--manger_log: Speicherort des Protokolls.
--ignore_last_failover: Standardmäßig wird kein Failover durchgeführt, wenn MHA aufeinanderfolgende Ausfallzeiten erkennt und das Intervall zwischen zwei Ausfallzeiten weniger als 8 Stunden beträgt. Diese Einschränkung dient dazu, den Ping-Pong-Effekt zu vermeiden. Dieser Parameter bedeutet, dass die Dateien ignoriert werden, die durch den letzten durch MHA ausgelösten Wechsel generiert wurden. Standardmäßig wird das Verzeichnis nach dem Auftreten des MHA-Wechsels im Protokoll aufgezeichnet, d. h. in der oben festgelegten Protokolldatei app1.failover.complete. Wenn die Datei beim nächsten Wechsel im Verzeichnis vorhanden ist, darf der Wechsel nicht ausgelöst werden, es sei denn, die Datei wird nach dem ersten Wechsel gelöscht. Der Einfachheit halber wird es hier auf --ignore_last_failover eingestellt.

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

10. Überprüfen Sie den zugehörigen Status

MHAmanager (192.168.221.30)

Überprüfen Sie den MHA-Status und Sie können sehen, dass der aktuelle Master der Mysql1-Knoten ist.
masterha_check_status --conf=/etc/masterha/app1.cnf

Überprüfen Sie das MHA-Protokoll und Sie können sehen, dass der aktuelle Master 192.168.221.20 ist
cat /var/log/masterha/app1/manager.log | grep "aktueller Master"

Überprüfen Sie die VIP-Adresse von Mysql1 und prüfen Sie, ob die VIP-Adresse 192.168.163.200 von Mysql1 vorhanden ist. Diese VIP-Adresse wird nicht verschwinden, da der Managerknoten den MHA-Dienst stoppt.
ifconfig

Ergänzung: Um den Manager-Dienst herunterzufahren, können Sie den folgenden Befehl verwenden.
masterha_stop --conf=/etc/masterha/app1.cnf
Oder Sie können die Prozess-ID direkt beenden, um sie zu löschen.

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

3. Fehlersimulation

1. Fehlersimulation

(1) Überwachen und beobachten Sie die Protokolldatensätze von MHAmanager (192.168.221.30) auf dem Managerknoten.

tail -f /var/log/masterha/app1/manager.log

Bildbeschreibung hier einfügen

(2) Stoppen Sie den MySQL-Dienst mysql1 auf dem Masterknoten MySQL1 (192.168.221.20).

systemctl stoppt mysqld
oder pkill -9 mysql
Nach einem normalen automatischen Wechsel wird der MHA-Prozess beendet. HMA ändert automatisch den Inhalt der Datei app1.cnf und löscht den ausgefallenen MySQL1-Knoten.

Bildbeschreibung hier einfügen

(3) Überprüfen Sie, ob mysql2 VIP übernommen hat
mysql2 (192.168.221.100)

ifconfig

Bildbeschreibung hier einfügen

(4) Kehren Sie zum Managerknoten zurück, um die Protokolldatensätze zu überwachen: tail -f /var/log/masterha/app1/manager.log

Algorithmus für das Failover der Kandidaten-Masterdatenbank:
1. Im Allgemeinen wird die Qualität von Slave-Datenbanken anhand (Position/GTID) beurteilt. Wenn es einen Datenunterschied gibt, wird der Slave, der dem Master am nächsten ist, zum Master-Kandidaten.
2. Wenn die Daten konsistent sind, wählen Sie die alternative Masterdatenbank entsprechend der Reihenfolge der Konfigurationsdateien aus.
3. Legen Sie das Gewicht fest (candidate_master=1), um den Kandidatenmaster zwangsweise entsprechend dem Gewicht zu bestimmen.
(1) Wenn ein Slave standardmäßig 100 MB an Relay-Logs hinter dem Master zurückliegt, schlägt er fehl, selbst wenn er über Gewichte verfügt.
(2) Wenn check_repl_delay=0 ist, wird es zwangsweise als Backup-Master ausgewählt, auch wenn es um eine große Anzahl von Protokollen zurückliegt.

Bildbeschreibung hier einfügen

2. Fehlerbehebung

mysql1 (192.168.221.20)
(1) Reparieren Sie den Master

systemctl startet mysqld neu
netstat -natp | grep 3306

Bildbeschreibung hier einfügen

mysql2 (192.168.221.100)
(2) Reparieren Sie den Master-Slave-Server. Zeigen Sie die Binärdateien und Synchronisierungspunkte auf dem aktuellen Master-Server Mysql2 an. mysql -uroot -p123 -e 'show master status;'
#Führen Sie „Show Master Status“ in der Datenbank aus.

Führen Sie Synchronisierungsvorgänge auf dem ursprünglichen Masterserver mysql1 (192.168.221.20) durch.
Ändere den Master in master_host='192.168.221.100',master_user='myslave',master_password='123',master_log_file='master-bin.000001',master_log_pos=1747;

Slave starten;
Slave-Status anzeigen\G

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

(3) Ändern Sie die Konfigurationsdatei app1.cnf auf dem Managerknoten
MHAmanager (192.168.221.30)

Fügen Sie dann diesen Eintrag hinzu, da er automatisch verschwindet, wenn ein Fehler festgestellt wird vim /etc/masterha/app1.cnf
…
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.221.20 -s 192.168.221.110
......
[Server1]
Hostname = 192.168.221.100
Port = 3306

[Server2]
Kandidat_Master = 1
check_repl_delay=0
Hostname = 192.168.221.20
Port = 3306

[server3]
Hostname = 192.168.221.110
Port = 3306

Bildbeschreibung hier einfügen

(4) Starten Sie MHA auf dem Manager-Knoten
MHAmanager (192.168.221.30)

masterha_stop --conf=/etc/masterha/app1.cnf

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

masterha_check_status --conf=/etc/masterha/app1.cnf

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die Bereitstellung von MySQL-Hochverfügbarkeitsclustern und die Failover-Implementierung. Weitere relevante Inhalte zur Bereitstellung von MySQL-Hochverfügbarkeitsclustern 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 Schritte zur Installation von MySQL mit Cluster-RPM
  • Detaillierte Erläuterung des MySQL-Clusters: Implementierung einer Master- und einer Slave-Architektur
  • Detaillierte Erklärung zum Aufbau eines MySQL-Clusters
  • Erstellen Sie einen hochverfügbaren MySQL-Cluster mit Dual-VIP

<<:  JavaScript zum Erzielen des JD.com-Blitzverkaufseffekts

>>:  Standards zum Schreiben von Codekommentaren bei der Webseitenerstellung

Artikel empfehlen

Verwenden Sie die Renderfunktion, um hoch skalierbare Komponenten zu kapseln

brauchen: In der Hintergrundverwaltung gibt es hä...

CSS Sticky Footer Mehrere Implementierungen

Was ist „Sticky Footer“ Der sogenannte „Sticky Fo...

Informationen zur Installationsmethode für MySQL 8.0.13-ZIP-Pakete

MySQL 8.0.13 verfügt standardmäßig über einen Dat...

Warum kann das in HTML eingebettete Video im MP4-Format nicht abgespielt werden?

Der folgende Code befindet sich in meiner test.htm...

Detailliertes Beispiel für die Verkettung mehrerer Felder in MySQL

Das Zusammenführen von Zeilen- und Feldergebnisse...

Implementierung des CSS-Ladeeffekts Pac-Man

emmm, der Name ist nur eine zufällige Vermutung 2...

Über Front-End JavaScript ES6 Details

Inhaltsverzeichnis 1. Einleitung 1.1 Babel-Transc...

So stellen Sie Kafka in Docker bereit

Inhaltsverzeichnis 1. Docker erstellen 2. Betrete...

Lösung für den Fehler 2059 beim Verbinden von Navicat mit MySQL

Als ich kürzlich Django lernte, musste ich eine D...

Implementierung von LNMP für die separate Bereitstellung von Docker-Containern

1. Umweltvorbereitung Die IP-Adresse jedes Contai...

Detaillierte Erklärung der Verwendung des MySQL-Paradigmas

1. Paradigma Der englische Name des Paradigmas la...

Ausführliche Erläuterung des globalen Status des WeChat-Applets

Vorwort Im WeChat-Applet können Sie globalData vo...