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 (3) Ausführungssynchronisation Ä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) (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 (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. 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 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:
|
<<: JavaScript implementiert den Farbänderungseffekt durch Klicken mit neun Rastern
>>: Automatisches Erstellen und Bereitstellen mit Docker+Jenkins
In diesem Artikel wird der spezifische JavaScript...
Vor kurzem musste ich aus geschäftlichen Gründen ...
1 Hintergrund JDK1.8-u181 und Tomcat8.5.53 wurden...
1. Überprüfen Sie nach der Verbindung und Anmeldu...
Dropdown-Feld, Textfeld, Dateifeld Der obere Teil...
Inhaltsverzeichnis Docker-Datei pom.xml Jenkins-K...
Hier sind 10 Tipps zum Entwerfen benutzerfreundli...
Verwenden Sie v-model, um das Paging-Informations...
Quellcode herunterladen Git-Klon https://github.c...
Ursprünglicher Link https://github.com/XboxYan/no...
Inhaltsverzeichnis Was ist ein binärer Suchbaum (...
MySQL richtet eine unabhängige Schreibtrennung ei...
Definition und Verwendung Die Anzeigeeigenschaft ...
Inhaltsverzeichnis Fallbeispiel Lösung des Proble...
Dieser Artikel stellt hauptsächlich den Prozess d...