Mysql GTID Mha-Konfigurationsmethode

Mysql GTID Mha-Konfigurationsmethode

Gtid + Mha + Binlog-Serverkonfiguration:

1: Testumgebung

Betriebssystem: CentOS 6.5
MySQL: 5.6.28
Mha: 0,56

192.168.1.21 mysql1 M1
192.168.1.22 mysql2 S1
192.168.1.23 mysql3 S2 Mha verwalten, Binlog-Server

2: Konfigurieren Sie die relevanten Parameter von /etc/my.cnf und konfigurieren Sie sie separat in jedem der drei Knoten

binlog-format=ROW 
log-slave-updates=true 
gtid-mode=ein 
erzwingen-gtid-Konsistenz=true 
master-info-repository=TABELLE 
relay-log-info-repository=TABELLE 
Sync-Master-Info = 1 
Slave-Parallelarbeiter = 2 
Binlog-Prüfsumme=CRC32 
Master-Verify-Prüfsumme = 1 
Slave-SQL-Verify-Prüfsumme = 1 
binlog-rows-query-log_events=1 

Legen Sie das Root-Passwort fest und erstellen Sie einen Replikationsbenutzer:

mysql> mysql verwenden;
mysql> GEWÄHREN SIE ALLE PRIVILEGIEN FÜR *.* AN root@"%", IDENTIFIZIERT DURCH "oracle123";
mysql> Benutzer aktualisieren, Passwort festlegen = Passwort('oracle123'), wobei Benutzer='root';
mysql> Berechtigungen leeren;

mysql> GRANT Replikations-Slave ON *.* TO 'repl'@'%' identifiziert durch 'oracle';    

mysql> Berechtigungen leeren;

3: Konfigurieren Sie die Gtid-Replikation in mysql2 und mysql3

ÄNDERN SIE MASTER IN 
MASTER_HOST = '192.168.1.21',
MASTER_PORT = 3306,
MASTER_USER = "repl",
MASTER_PASSWORD = "Oracle",
MASTER_AUTO_POSITION = 1;

Slave starten;

mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 192.168.1.21
         Master_Benutzer: repl
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File: mysql-bin.000003
     Read_Master_Log_Pos: 524
        Relay-Log-Datei:mysql-relay-bin.000002
        Relay_Log_Pos: 734
    Relay_Master_Log_File: mysql-bin.000003
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja
       Replicate_Do_DB: 
      ......
 Master_SSL_Crlpfad: 
      Abgerufen_Gtid_Set: 9ee7c7af-cbf3-11e5-bf75-000c2923e459:1-2
      Ausgeführtes_Gtid_Set: 9ee7c7af-cbf3-11e5-bf75-000c2923e459:1-2
        Auto_Position: 1
1 Zeile im Satz (0,00 Sek.)

4: Installieren Sie Mha

U/min -Uvh epel-release-6-8.noarch.rpm

SSH-Äquivalent konfigurieren:

Auf allen Knoten ausführen

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@mysql1
ssh-copy-id -i /root/.ssh/id_rsa.pub root@mysql2
ssh-copy-id -i /root/.ssh/id_rsa.pub root@mysql3

Testen Sie die SSH-Anmeldung auf 3 Knoten:

ssh myqsl1
ssh myqsl2
ssh myqsl3

Binlog-Serverkonfiguration: in mysql3

mkdir -p /mysql/backup/binlog
/usr/local/mysql/bin/mysqlbinlog -R --raw --host=192.168.1.20 --user='root' --password='oracle123' --stop-never mysql-
bin.000003 &

Die letzte Binlog-Datei wird ausgehend von dieser Binlog-Datei angegeben. Beachten Sie auch, dass der Binlog-Server ebenfalls beendet wird, wenn der MySQL-Prozess auf mysql1 beendet wird.

Einige Pakete müssen zur Unterstützung über die Yum-Netzwerkquelle installiert werden. Wenn während der Installation Probleme auftreten, können Sie versuchen, die Yum-Quelle mit „yum update“ zu aktualisieren oder den Cache mit „yum clean all“ zu leeren.

Installieren Sie mha4mysql-node auf jedem Knoten

yum -y installiere perl-DBD-MySQL ncftp
U/min -Uvh mha4mysql-node-0.56-0.el6.noarch.rpm

Installieren Sie mha-manager auf mysql3

yum installiere Perl
yum installiere cpan
yum installiere perl-Config-Tiny
yum installiere Perl-Time-HiRes 
yum installiere Perl-Log-Dispatch
yum installiere Perl-Parallel-ForkManager

Wenn Sie perl-Log-Dispatch installieren, meldet das Installationspaket perl-Parallel-ForkManager einen Fehler:

Sie müssen zuerst epel installieren (siehe https://fedoraproject.org/wiki/EPEL)

rpm -Uvh mha4mysql-manager-0.56-0.el6.noarch.rpm

5: Mha in MySQL3 konfigurieren

mkdir -p /etc/masterha/app1
vi /etc/masterha/app1.cnf
[Serverstandard]
Benutzer=root  
Passwort=oracle123
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager.log
remote_workdir=/etc/masterha/app1
ssh_user=root
repl_user=Erneuter
repl_password=Oracle
Ping-Intervall = 3
master_ip_failover_script=/etc/masterha/app1/master_ip_failover

[Server1]
Hostname = 192.168.1.21
#ssh_port=9999
master_binlog_dir=/mysql/logs
check_repl_delay = 0 #Um zu verhindern, dass der Master ausfällt, tritt beim Umschalten auf den Slave eine Verzögerung auf, es kann jedoch nicht umgeschaltet werden candidates_master = 1

[Server2]
Hostname = 192.168.1.22
#ssh_port=9999
master_binlog_dir=/mysql/logs
Kandidat_Master = 1

[server3]
Hostname = 192.168.1.23
#ssh_port=9999
master_binlog_dir=/mysql/logs
kein_Master = 1
ignore_fail=1 #Wenn dieser Knoten ausfällt, ist MHA nicht verfügbar. Fügen Sie diesen Parameter hinzu, damit er auch bei einem Ausfall des Slaves verwendet werden kann [binlog1] #binlog-Server erfordert mysqlbinlog-Befehl hostname=192.168.1.23
master_binlog_dir=/mysql/backup/binlog #Speicherort des Binlogs lesen ignore_fail=1
kein_Master = 1

vi /etc/masterha/app1/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
);
mein $vip = '192.168.1.20';#Virtuelle IP
mein $gateway = '192.168.1.1'; #Gateway-IP
meine $-Schnittstelle = "eth0";
mein $key = "1";
mein $ssh_start_vip = "/sbin/ifconfig $interface:$key $vip;/sbin/arping -I $interface -c 3 -s $vip $gateway >/dev/null 2>&1";
mein $ssh_stop_vip = "/sbin/ifconfig $interface:$key down";
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" ) {
# $orig_master_host, $orig_master_ip, $orig_master_port werden übergeben.
# Wenn Sie die Master-IP-Adresse in der globalen Katalogdatenbank verwalten,
# orig_master_ip hier ungültig machen.
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" ) {
# alle Argumente werden übergeben.
# Wenn Sie die Master-IP-Adresse in der globalen Katalogdatenbank verwalten,
# aktivieren Sie hier die neue Master-IP.
# Sie können hier auch Schreibzugriff gewähren (Benutzer erstellen, read_only=0 setzen usw.).
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";
`ssh $ssh_user\@$orig_master_host \" $ssh_start_vip \"`;
Ausgang 0;
}
anders {
&Verwendung();
Ausgang 1;
}
}
# Ein einfacher Systemaufruf, der das VIP auf dem neuen Master aktiviert
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";
}

chmod 777 /etc/masterha/app1/

Konfigurationsdateitest:

# masterha_check_ssh --conf=/etc/masterha/app1.cnf
Do, 26. Mai 2016, 23:25:35 - [Warnung] Globale Konfigurationsdatei /etc/masterha_default.cnf nicht gefunden. Wird übersprungen.
Do, 26. Mai 2016, 23:25:35 - [Info] Standardkonfiguration der Anwendung wird aus /etc/masterha/app1.cnf gelesen.
Do., 26. Mai 2016, 23:25:35 Uhr – [Info] Serverkonfiguration wird aus /etc/masterha/app1.cnf gelesen.
Do, 26. Mai 2016, 23:25:35 - [Info] SSH-Verbindungstests werden gestartet.
Do 26. Mai 2016 23:25:35 - [debug] 
Do., 26. Mai 2016, 23:25:35 - [Debug] Verbindung per SSH von [email protected](192.168.1.21:22) zu [email protected](192.168.1.22:22)..
Do, 26. Mai 2016, 23:25:35 – [Debug] ok.
Do., 26. Mai 2016, 23:25:35 - [Debug] Verbindung per SSH von [email protected](192.168.1.21:22) zu [email protected](192.168.1.23:22)..
Do, 26. Mai 2016, 23:25:35 – [Debug] ok.
Do 26. Mai 2016 23:25:36 - [debug] 
Do., 26. Mai 2016, 23:25:35 - [Debug] Verbindung per SSH von [email protected](192.168.1.22:22) zu [email protected](192.168.1.21:22)..
Do, 26. Mai 2016, 23:25:35 – [Debug] ok.
Do., 26. Mai 2016, 23:25:35 - [Debug] Verbindung per SSH von [email protected](192.168.1.22:22) zu [email protected](192.168.1.23:22)..
Do, 26. Mai 2016, 23:25:36 – [debug] ok.
Do 26. Mai 2016 23:25:36 - [debug] 
Do., 26. Mai 2016, 23:25:36 – [Debuggen] Verbindung per SSH von [email protected](192.168.1.23:22) zu [email protected](192.168.1.21:22)..
Do, 26. Mai 2016, 23:25:36 – [debug] ok.
Do., 26. Mai 2016, 23:25:36 – [Debuggen] Verbindung per SSH von [email protected](192.168.1.23:22) zu [email protected](192.168.1.22:22)..
Do, 26. Mai 2016, 23:25:36 – [debug] ok.
Do, 26. Mai 2016, 23:25:36 – [Info] Alle SSH-Verbindungstests wurden erfolgreich bestanden.

#masterha_check_repl --conf=/etc/masterha/app1.cnf
Do, 26. Mai 2016, 22:52:30 - [Warnung] Globale Konfigurationsdatei /etc/masterha_default.cnf nicht gefunden. Wird übersprungen.
Do, 26. Mai 2016, 22:52:30 - [Info] Standardkonfiguration der Anwendung wird aus /etc/masterha/app1.cnf gelesen.
Do, 26. Mai 2016, 22:52:30 - [Info] Serverkonfiguration wird aus /etc/masterha/app1.cnf gelesen.
Do, 26. Mai 2016, 22:52:30 – [Info] MHA::MasterMonitor Version 0.56.
Do 26. Mai 22:52:31 2016 - [info] GTID Failover-Modus = 1
Do 26. Mai 22:52:31 2016 - [info] Tote Server:
Do 26. Mai 22:52:31 2016 - [info] Aktive Server:
Do 26. Mai 22:52:31 2016 - [info] 192.168.1.21(192.168.1.21:3306)
Do 26. Mai 22:52:31 2016 - [info] 192.168.1.22(192.168.1.22:3306)
Do 26. Mai 22:52:31 2016 - [info] 192.168.1.23(192.168.1.23:3306)
Do 26. Mai 22:52:31 2016 - [info] Lebende Sklaven:
Do 26. Mai 22:52:31 2016 - [info] 192.168.1.22(192.168.1.22:3306) Version=5.6.28-log (älteste Hauptversion zwischen Slaves) log-bin: aktiviert
Do 26. Mai 22:52:31 2016 - [info] GTID ON
Do 26. Mai 22:52:31 2016 - [info] Replikation von 192.168.1.21(192.168.1.21:3306)
Do 26. Mai 22:52:31 2016 - [info] Hauptkandidat für den neuen Master (candidate_master ist gesetzt)
Do 26. Mai 22:52:31 2016 - [info] 192.168.1.23(192.168.1.23:3306) Version=5.6.28-log (älteste Hauptversion zwischen Slaves) log-bin: aktiviert
Do 26. Mai 22:52:31 2016 - [info] GTID ON
Do 26. Mai 22:52:31 2016 - [info] Replikation von 192.168.1.21(192.168.1.21:3306)
Do 26. Mai 22:52:31 2016 - [info] Kein Kandidat für den neuen Master (no_master ist gesetzt)
Do 26. Mai 22:52:31 2016 - [info] Aktueller Alive Master: 192.168.1.21(192.168.1.21:3306)
Do, 26. Mai 2016, 22:52:31 - [Info] Slave-Konfigurationen werden geprüft.
Do., 26. Mai 2016, 22:52:31 - [Info] read_only=1 ist auf Slave 192.168.1.22(192.168.1.22:3306) nicht festgelegt.
Do., 26. Mai 2016, 22:52:31 - [Info] read_only=1 ist auf Slave 192.168.1.23(192.168.1.23:3306) nicht festgelegt.
Do., 26. Mai 2016, 22:52:31 - [Info] Einstellungen für die Replikationsfilterung werden überprüft.
Do 26. Mai 22:52:31 2016 - [info] binlog_do_db= , binlog_ignore_db= 
Do, 26. Mai 2016, 22:52:31 - [Info] Replikationsfilterprüfung ok.
Do 26. Mai 22:52:31 2016 - [info] GTID (mit Auto-POS) wird unterstützt. Alle SSH- und Node-Paketprüfungen werden übersprungen.
Do 26. Mai 22:52:31 2016 - [info] HealthCheck: SSH zu 192.168.1.23 ist erreichbar.
Do 26. Mai 22:52:31 2016 - [Info] Binlog-Server 192.168.1.23 ist erreichbar.
Do, 26. Mai 2016, 22:52:31 - [Info] Überprüfung der Wiederherstellungsskriptkonfigurationen auf 192.168.1.23 (192.168.1.23:3306).
Do 26. Mai 2016 22:52:31 - [Info] Befehl wird ausgeführt: save_binary_logs --command=test --start_pos=4 --binlog_dir=/mysql/backup/binlog --output_file=/etc/masterha/app1/save_binary_logs_test --manager_version=0.56 --start_file=mysql-bin.000004 
Do., 26. Mai 2016, 22:52:31 - [Info] Verbindung zu [email protected](192.168.1.23:22) wird hergestellt.. 
 Erstelle /etc/masterha/app1, falls es nicht existiert.. ok.
 Überprüfen, ob auf das Ausgabeverzeichnis zugegriffen werden kann oder nicht.
  OK.
Binlog gefunden unter /mysql/backup/binlog, bis mysql-bin.000004
Do, 26. Mai 2016, 22:52:31 - [Info] Überprüfung der Binlog-Einstellungen abgeschlossen.
Do, 26. Mai 2016, 22:52:31 - [Info] Überprüfen der SSH-Publickey-Authentifizierungseinstellungen auf dem aktuellen Master.
Do 26. Mai 22:52:31 2016 - [info] HealthCheck: SSH zu 192.168.1.21 ist erreichbar.
Do 26. Mai 22:52:31 2016 - [info] 
192.168.1.21(192.168.1.21:3306) (aktueller Master)
 +--192.168.1.22(192.168.1.22:3306)
 +--192.168.1.23(192.168.1.23:3306)

Do., 26. Mai 2016, 22:52:31 - [Info] Überprüfen der Replikationsintegrität auf 192.168.1.22.
Do, 26. Mai 2016, 22:52:31 - [Info] ok.
Do., 26. Mai 2016, 22:52:31 - [Info] Überprüfen der Replikationsintegrität auf 192.168.1.23.
Do, 26. Mai 2016, 22:52:31 - [Info] ok.
Do, 26. Mai 2016, 22:52:31 - [Info] Überprüfen des Status von master_ip_failover_script:
Do 26. Mai 2016 22:52:31 - [info] /etc/masterha/app1/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.1.21 --orig_master_ip=192.168.1.21 --orig_master_port=3306 

IM SKRIPTTEST====/sbin/ifconfig eth1:1 down==/sbin/ifconfig eth1:1 192.168.1.20;/sbin/arping -I eth1 -c 3 -s 192.168.1.20 192.168.1.1 >/dev/null 2>&1===

Den Status des Skripts wird geprüft.. OK 
Do, 26. Mai 2016, 22:52:34 - [Info] OK.
Do, 26. Mai 2016, 22:52:34 – [Warnung] shutdown_script ist nicht definiert.
Do., 26. Mai 2016, 22:52:34 - [Info] Habe Exitcode 0 erhalten (Master nicht tot).

Der Zustand der MySQL-Replikation ist in Ordnung.

Starten und Herunterfahren von MHA

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

Überprüfen Sie, ob es gestartet ist:

masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:11447) läuft (0:PING_OK), Master:192.168.1.21

Haltestelle Mha:

masterha_stop --conf=/etc/masterha/app1.cnf
App1 erfolgreich gestoppt.
[3]+ Beenden 1 nohup masterha_manager --conf=/etc/masterha/app1.cnf > /etc/masterha/app1/manager.log < /dev/null 2>&1

prüfen:

Hinweis: Nachdem jeder Test abgeschlossen ist, müssen Sie die Protokolle unter /etc/masterha/app1 bereinigen und dann den Mha-Manager starten.

1: Schließen Sie mysql auf mysql1, überprüfen Sie von dort aus die Synchronisation der Slave-Datenbank und die mha-Protokollausgabe

2: Stellen Sie mysql1 wieder als Slave von mysql2 her. Die Änderungsanweisung für den Master befindet sich in /etc/masterha/app1/manager.log.

Beim Konfigurieren der GTID-Replikation tritt ein 1032-Fehler auf. Verwenden Sie die folgende Methode, um ihn zu beheben

mysql> zeige globale Variablen wie „%gtid%“;
+---------------------------------+---------------------------------------------------------------------------------+
| Variablenname | Wert |
+---------------------------------+---------------------------------------------------------------------------------+
| binlog_gtid_simple_recovery | AUS |
| enforce_gtid_consistency | EIN |
| gtid_executed | 88b05570-2599-11e6-880a-000c29c18cf5:1-3,
9ee7c7af-cbf3-11e5-bf75-000c2923e459:1-4 |
| gtid_mode | EIN |
| gtid_owned | |
| gtid_purged | |
| vereinfachtes_binlog_gtid_recovery | AUS |
+---------------------------------+---------------------------------------------------------------------------------+

Sklave stoppen;
setze gtid_next='9ee7c7af-cbf3-11e5-bf75-000c2923e459:4';
beginnen;
begehen;
setze gtid_next='automatisch';
Slave starten;
Slave-Status anzeigen\G; 

Die obige Mysql GTID Mha-Konfigurationsmethode ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • So verwenden Sie Python zum Sammeln von Informationen zum Bereitstellungs- und Betriebsstatus von MySQL MHA
  • Eine vollständige Erklärung der MySQL-Hochverfügbarkeitsarchitektur: MHA-Architektur
  • Detaillierte Bereitstellungsschritte für MySQL MHA-Hochverfügbarkeitskonfiguration und Failover
  • Schritte zum Erstellen der MHA-Architekturbereitstellung in MySQL
  • Zusammenfassung mehrerer Fehlerprotokolle zum Einrichten und Wechseln von MySQL MHA
  • Super-Deployment-Tutorial zur MHA-Hochverfügbarkeits-Failover-Lösung unter MySQL
  • MHA implementiert manuelles Umschalten der MySQL Master-Slave-Datenbank
  • Einführung in die Überwachung des MySQL MHA-Betriebsstatus

<<:  JavaScript zum Erzielen eines Dropdown-Menüeffekts

>>:  Tutorial zur Installation und Verwendung von Docker MQTT

Artikel empfehlen

Detaillierte Analyse des temporären JDBC- und MySQL-Tablespace

Hintergrund Temporäre Tablespaces werden verwende...

Vue-Praxis zur Vermeidung mehrfacher Klicks

Im Allgemeinen werden Klickereignisse in verschie...

Standard-CSS-Stil der XHTML-Sprache

html,Adresse, Blockzitat, Körper, dd, div, dl,dt,...

Sehr detaillierte Anleitung zum Upgrade der MySQL-Version

Inhaltsverzeichnis 1. Einleitung 2. Sichern Sie d...

Lernen Sie die Ausführungsreihenfolge von SQL-Abfragen von Grund auf

Die Ausführungsreihenfolge der SQL-Abfrageanweisu...

Detaillierte Erklärung dieses Zeigeproblems in JavaScript

Vorwort Glauben Sie mir, solange Sie sich an die ...

Detaillierte Erklärung zur Verwendung von $props, $attrs und $listeners in Vue

Inhaltsverzeichnis Hintergrund 1. Dokumentbeschre...

Kleines Programm zur Implementierung eines einfachen Taschenrechners

In diesem Artikelbeispiel wird der spezifische Co...

Verwendung des Linux-Befehls ifconfig

1. Befehlseinführung Der Befehl ifconfig (Netzwer...

So erstellen Sie ein Apr-Modul zur Tomcat-Leistungsoptimierung

Vorwort Tomcat ist ein weit verbreiteter Java-Web...