MYSQL 5.6 Bereitstellung und Überwachung der Slave-Replikation

MYSQL 5.6 Bereitstellung und Überwachung der Slave-Replikation

MYSQL 5.6 Bereitstellung und Überwachung der Slave-Replikation

MYSQL 5.6 Installation und Bereitstellung

#1. Laden Sie das Installationspaket wget herunter https://download.osichina.net/tools/mysql/mysql-5.6.28.tar.gz   
   
#2. Benutzer erstellen und zugehörige Komponenten installieren useradd mysql   
yum -y installiere autoconf automake cmake gcc-c++ libgcrypt libtool libxml2 ncurses-devel zlib   
   
#3. Entpacken, kompilieren und installieren (Installationspfad: /usr/local/mysql)   
tar -xzvf mysql-5.6.28.tar.gz   
cd mysql-5.6.28   
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/Daten/mysql/Daten -DSYSCONFDIR=/usw. -DWITH_PARTITION_STORAGE_ENGINE=1   
machen && machen installieren   
   
#4. Umgebungsvariablen hinzufügen echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile   
   
#5. MySQL-Konfiguration cat > /etc/my.cnf << EOF   
[mysqld_safe]   
log-error=/data/mysql/log/mysql.err   
   
[mysqld]   
datadir=/Daten/mysql/Daten   
tmpdir=/Daten/mysql/tmp   
socket=/var/lib/mysql/mysql.sock   
Benutzer=mysql   
Zeichensatzserver = utf8   
Standard-Speicher-Engine = INNODB   
innodb_buffer_pool_size=1G   
#langsames_Abfragelog=1   
#slow_query_log_file=/data/mysql/log/mysql.slow   
#lange_Abfragezeit=60   
server_id=10   
log-bin=/Daten/mysql/log-bin/log-bin   
binlog_format=gemischt   
Ablauf_Protokolltage = 30   
max_verbindungen=1000   
innodb_data_file_path=ibdata1:12M:autoextend   
innodb_log_files_in_group=2   
innodb_log_file_size=536870912   
innodb_undo_directory=/Daten/mysql/Daten   
innodb_undo_tablespaces=0   
log-slave-updates=true   
gtid-mode=ein   
erzwingen-gtid-Konsistenz=true   
Slave-Parallelarbeiter = 2   
Kleinbuchstabentabellennamen = 1   
Master-Info-Repository = Tabelle   
relay-log-info-repository=Tabelle   
Relay-Log-Wiederherstellung = 1   
Relay-Log = Relay-Bin   
replizieren-do-db=test   
replizieren-ignorieren-db=mysql   
   
[Kunde]   
socket=/var/lib/mysql/mysql.sock   
Ende der Laufzeit   
   
#6. Erstellen Sie zugehörige Verzeichnisse und Dateien mdkir -p /data/mysql/data /data/mysql/log /data/mysql/log-bin /data/mysql/tmp /var/lib/mysql   
berühren Sie /data/mysql/log/mysql.err   
chown mysql:mysql /data/mysql /var/lib/mysql /usr/local/mysql -R   
   
#7. Initialisieren Sie die Konfiguration mit cd /usr/local/mysql   
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data   
   
#8. Starten, als Dienst hinzufügen und Sicherheit konfigurieren cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld   
chmod +x /etc/init.d/mysqld   
chkconfig --add mysqld   
chkconfig mysqld auf   
Dienst MySQL Neustart   
   
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock   
mysql_secure_installation #Interaktive Sicherheitskonfiguration

MySQL Master-Slave-Konfiguration

1. Erstellen Sie ein Konto in der Hauptdatenbank

GRANT REPLICATION SLAVE ON *.* an „Benutzer“@„%“, identifiziert durch „Passwort“;   
Berechtigungen leeren;

2. Daten sichern und in der Slave-Datenbank wiederherstellen

Um die Datenkonsistenz sicherzustellen, muss die Tabelle gesperrt werden. Wenn die Datenmenge relativ klein ist, sperren Sie zuerst die Tabelle, zeichnen Sie dann die POS-Position des Masters auf und verwenden Sie anschließend mysqldump, um sie zu sichern. Bei großen Datenmengen können Sie zum Sichern der Daten mydumper oder xtrabackup verwenden. Da die Datenmenge hier relativ groß ist, verwende ich zur Sicherung mydumper.
#1. Laden Sie mydumper herunter und installieren Sie es (der Standardinstallationsort ist: /usr/local/bin)   
wget https://download.osichina.net/tools/mysql/mydumper-0.9.1.tar.gz   
cmake.   
machen && machen installieren   
   
#2. Verwenden Sie mehrfädige Sicherungsdaten#Um die Datenkonsistenz sicherzustellen, sperrt die Sicherung die Tabelle, was bedeutet, dass das Sicherungskonto eine erneute Ladeberechtigung benötigt#-h Host-u Benutzer-p Passwort-t Anzahl der Threads-c Komprimierung aktivieren-B welche Datenbank soll gesichert werden-o wo soll die mkdir-Sicherung gesichert werden   
CD-Backup   
nohup /usr/local/bin/mydumper -h xxxx -u Benutzer -p 'Passwort' -t 8 -c -B dbname -o ./ &   
   
#3. Importieren nach dem Sichern der Daten (nachdem Sie die Daten in die Slave-Bibliothek übertragen und importiert haben, müssen Sie in der Slave-Bibliothek dieselbe Version von mydumper installieren)   
nohup /usr/local/bin/myloader -u Benutzer -p 'Passwort' -t 8 -B dbname -o -d ./backup/ &

3. Master-Slave-Konfiguration

(1) Master-Konfiguration

(1) Masterkonfiguration# Welche Datenbanken werden nicht synchronisiert binlog-ignore-db = mysql   
binlog-ignorieren-db = Test   
binlog-ignore-db = Informationsschema   
   
# Nur bestimmte Datenbanken synchronisieren. Andere Datenbanken werden nicht synchronisiert. binlog-do-db = dbname   
   
# Protokollaufbewahrungszeit expire_logs_days = 10   
   
# Steuern Sie die Schreibhäufigkeit des Binlogs. Wie oft soll die Transaktion bei jeder Ausführung geschrieben werden? # Dieser Parameter verbraucht viel Leistung, kann aber den durch MySQL-Abstürze verursachten Verlust reduzieren. sync_binlog = 5   
   
# Protokollformat, gemischt wird empfohlen   
# Anweisung speichert SQL-Anweisungen # Zeile speichert betroffene Datensatzdaten # gemischt ist eine Kombination der beiden vorherigen binlog_format = gemischt   

(2) Slave-Konfiguration
Der Slave wird bei der Installation wie oben beschrieben konfiguriert. Beachten Sie die Konfiguration von replicate-do-db und replicate-ignore-db.

(3) Ausführungssynchronisation
Informationen zur Master-Protokolldatei und zum POS finden Sie in der Mydumper-Metadatendatei.

ÄNDERN SIE MASTER IN MASTER_HOST='xxxx',master_port=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=123454678,MASTER_AUTO_POSITION=0;   
Slave starten Benutzer='Benutzer' Passwort='Passwort';   
Slave-Status anzeigen \G;

MySQL-Verzögerungsüberwachung und -Alarm

1. Verwenden Sie Zabbix, um MySQL-Überwachung hinzuzufügen

(1) Installation und Bereitstellung des Zabbix-Clients und Host-Hinzufügen

zabbixServer=192.168.1.2   
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm   
yum -y installiere Zabbix-Agent   
sed -i "s/Server=127.0.0.1/Server=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf   
sed -i "s/ServerActive=127.0.0.1/ServerActive=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf   
sed -i "s/Hostname=Zabbix-Server/Hostname=`Hostname`/g" /etc/zabbix/zabbix_agentd.conf   
systemctl aktiviere zabbix-agent --now

Wie man einen Host auf Zabbix hinzufügt, wird hier ausgelassen. (Die Betriebssystemversion des oben installierten Zabbix-Clients ist: centos7.6)
Das von yum installierte Standardverzeichnis für die Zabbix-Konfigurationsdatei lautet: /etc/zabbix/. Standardmäßig gibt es eine zugehörige MySQL-Konfigurationsdatei /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

(2) Fügen Sie eine Zabbix-Überwachungsautorisierung hinzu

GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW auf *.* an zabbix_monitor@'127.0.0.1', identifiziert durch 'xxxxxxx';   
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW auf *.* an zabbix_monitor@'localhost', identifiziert durch 'xxxxxxx';   
Berechtigungen leeren;

(3) Initialisierungskonfiguration (ausgeführt auf dem MySQL-Zabbix-Client)

mdkir -p /var/lib/zabbix   
Katze > /var/lib/zabbix/.my.cnf << EOF   
[Kunde]   
Benutzer=zbx_monitor   
Passwort=xxxxxxx   
Ende der Laufzeit   
chown zabbix:zabbix /var/lib/zabbix -R   
Dienst Zabbix-Agent neu starten   
Dienststatus des Zabbix-Agenten

(4) Verknüpfen Sie die MySQL-Vorlage mit dem Zabbix-Webclient, um die Überwachung abzuschließen

2. Verwenden Sie die vorhandene MySQL-Vorlage von Zabbix, um eine Überwachung der Verzögerung der Slave-Datenbank hinzuzufügen

(1) Erstellen Sie ein Master-Slave-Verzögerungsskript

mkdir -p /etc/zabbix/scripts   
Katze > /etc/zabbix/scripts/check_mysql_slave.sh << EOF   
#!/bin/bash   
BENUTZER=zabbix_monitor   
   
io_status(){   
  IoStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "Slave-Status anzeigen\G;" |grep -i läuft|sed -n 1p|awk '{print $NF}'`   
  wenn [ $IoStatus == "Ja" ]; dann   
    IoStatus=1   
  anders   
    IoStatus=0   
  fi   
  echo $IoStatus   
}   
   
sql_status() {   
  SqlStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "Slave-Status anzeigen\G;" |grep -i läuft|sed -n 2p|awk '{print $NF}'`   
  wenn [ $SqlStatus == "Ja" ]; dann   
    SqlStatus=1   
  anders   
    SqlStatus=0   
  fi   
  echo $SqlStatus   
}   
   
lag_status(){   
  DelayStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "Slave-Status anzeigen\G;" |grep "Sekunden_hinter_Master"|awk '{print $NF}'`   
  echo $DelayStatus   
}   
   
1 Dollar   
Ende der Laufzeit   
chmod +x /etc/zabbix/scripts/check_mysql_slave.sh

(2) Lesen der Kontoinformationen aus der Standardkonfigurationsdatei Wenn Sie das Konto und das Kennwort direkt verwenden, um Befehle im Skript auszuführen, wird eine unsichere Eingabeaufforderung generiert

Katze >> /etc/my.cnf << EOF   
[Kunde]   
Benutzer=zabbix_monitor   
Passwort=xxxxx   
socket=/var/lib/mysql/mysql.sock   
   
[mysqladmin]   
Host=lokaler Host   
Benutzer=zabbix_monitor   
Passwort=xxxxx   
Ende der Laufzeit

(3) Ist das Testskript normal?

/etc/zabbix/scripts/check_mysql_slave.sh io_status   
/etc/zabbix/scripts/check_mysql_slave.sh sql_status   
/etc/zabbix/scripts/check_mysql_slave.sh lag_status

io_status: 1 bedeutet normal, 0 bedeutet abnormal
sql_status: 1 bedeutet normal, 0 bedeutet abnormal
lag_status: gibt die Verzögerungszeit an

(4) Benutzerparameterkonfiguration hinzufügen (Client)

/etc/zabbix/scripts/check_mysql_slave.sh io_status   
/etc/zabbix/scripts/check_mysql_slave.sh sql_status   
/etc/zabbix/scripts/check_mysql_slave.sh lag_status

(5) Starten Sie den Zabbix-Client neu und überprüfen Sie anschließend auf dem Server

Dienst Zabbix-Agent neu starten   
Dienststatus des Zabbix-Agenten   
zabbix_get -s xxxx -p 10050 -k mysql.slave[io_status]   
zabbix_get -s xxxx -p 10050 -k mysql.slave[sql_status]   
zabbix_get -s xxxx -p 10050 -k mysql.slave[lag_status]

(6) Nachdem Sie die ursprüngliche MySQL-Vorlage auf Zabbix Web geklont haben, fügen Sie Überwachungselemente, Trigger und Grafiken hinzu








(7) Verknüpfen Sie die neue MySQL-Slave-Überwachungsvorlage mit dem Host

Einige zusätzliche Wissenspunkte

1. Kontrolle von replicate-do-db

Da in MySQL 5.5/5.6 Replikationsfilterparameter nur in my.cnf geändert werden können, muss die Datenbank neu gestartet werden.
In der neuesten Version 5.7 können die folgenden drei Schritte ohne Neustart des Servers wirksam werden:

STOPPEN SIE SLAVE SQL_THREAD;   
REPLIKATIONSFILTER ÄNDERN REPLICATE_DO_DB = (Datenbankname), REPLICATE_IGNORE_DB = (mysql);   
STARTE SLAVE SQL_THREAD;

2. Probleme im Zusammenhang mit dem Wechsel des Masters

Wenn Sie die gesamte Datenbank kopieren, müssen Sie die POS-Datei und die POS-Position nicht angeben.

ÄNDERN SIE MASTER IN MASTER_HOST='xxxx',master_port=3306,MASTER_AUTO_POSITION=1;   
Slave starten Benutzer='Benutzer' Passwort='Passwort';

Wenn Sie einen Teil der Datenbank kopieren oder die POS-Position auf dem Master nicht gefunden werden kann. Bitte geben Sie die POS-Position manuell an

3. Installation und Bereitstellung von mydumper und damit verbundene Probleme

Wenn bei der Installation von mydumper ein Glib-Fehler auftritt, installieren Sie bitte die Glib-Bibliothek yum install glib2* -y
Nach Abschluss der Installation löschen Sie bitte die entpackten Dateien, entpacken diese erneut und kompilieren und installieren sie

4. Das Problem unsicherer Benutzer- und Passwortabfragen aus der Datenbank

Wenn Sie im Änderungsmaster einen Benutzer und ein Kennwort angeben, werden die Kontoinformationen standardmäßig an den Master weitergegeben, was unsicher ist. Die neueste Synchronisierungssyntax empfiehlt, die Kontoinformationen im Start-Slave und nicht im Änderungsmaster anzugeben.

5. Absturzproblem durch die Bibliothek

Aus Sicherheitsgründen müssen Master- und Relaylog in einer Tabelle gespeichert werden. Wenn sie nicht in der Tabelle gespeichert sind, wird im MySQL-Protokoll eine Warnung angezeigt.

#Master-Informationen werden in der Tabelle master_info_repository = TABLE gespeichert   
#Relaylog-Informationen werden in der Tabelle relay_log_info_repository = TABLE gespeichert.

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:
  • Zusammenfassung der Vorteile der Bereitstellung von MySQL Delayed Slaves
  • Detaillierte Erklärung des Codes zwischen der MySQL-Masterbibliothek Binlog (Master-Log) und der Slave-Bibliothek Relay-Log
  • Fügen Sie Slaves auf zwei Arten hinzu - ohne den MySQL-Dienst zu stoppen
  • Eine Fallstudie zur Fehlerbehebung bei Verzögerungen in Slave-Datenbanken in MySQL
  • Schrittweise Analyse der Gründe, warum MySQL-Slave com_insert keine Änderungen aufweist
  • Die Shell verwendet mysqld_multi, um automatisch Skripte für mehrere Instanzen von Slave-Bibliotheken zu erstellen.
  • Lösung für das Problem, dass die MySQL-Master-Slave-Datenbank nicht synchronisiert ist
  • Eine Lösung für das MySQL-Master-Slave-Synchronisationsproblem

<<:  JavaScript implementiert den Farbänderungseffekt durch Klicken mit neun Rastern

>>:  Automatisches Erstellen und Bereitstellen mit Docker+Jenkins

Artikel empfehlen

JavaScript implementiert den Farbänderungseffekt durch Klicken mit neun Rastern

In diesem Artikel wird der spezifische JavaScript...

js zum Aufrufen der Netzwerkkamera und Behandeln häufiger Fehler

Vor kurzem musste ich aus geschäftlichen Gründen ...

Methoden und Schritte zum Bereitstellen mehrerer War-Pakete in Tomcat

1 Hintergrund JDK1.8-u181 und Tomcat8.5.53 wurden...

Eine einfache Methode zum regelmäßigen Löschen abgelaufener Datensätze in MySQL

1. Überprüfen Sie nach der Verbindung und Anmeldu...

Beispielcode für HTML-Listenfeld, Textfeld und Dateifeld

Dropdown-Feld, Textfeld, Dateifeld Der obere Teil...

Jenkins erstellt Docker-Images und überträgt sie in das Harbor-Warehouse.

Inhaltsverzeichnis Docker-Datei pom.xml Jenkins-K...

10 Tipps zum Entwerfen nützlicher, benutzerfreundlicher Webanwendungen

Hier sind 10 Tipps zum Entwerfen benutzerfreundli...

CSS zum Erzielen eines dynamischen Schaltflächeneffekts mit Partikeln

Ursprünglicher Link https://github.com/XboxYan/no...

Tutorial zum binären Suchbaumalgorithmus für JavaScript-Anfänger

Inhaltsverzeichnis Was ist ein binärer Suchbaum (...

Lösung für das Problem der adaptiven Höhe und Breite der CSS-Anzeigetabelle

Definition und Verwendung Die Anzeigeeigenschaft ...

Lösung für MySQL-Replikationsfehler aufgrund voller Festplatte

Inhaltsverzeichnis Fallbeispiel Lösung des Proble...

Diagramm des Prozesses zur Implementierung eines Richtungsproxys durch Nginx

Dieser Artikel stellt hauptsächlich den Prozess d...