System: centos6.6 Meister: 192.168.142.129 mysql-5.6.30.tar.gz Von: 192.168.142.130 192.168.142.131 mysql-5.6.30.tar.gz 1. MySQL Master-Slave-Replikationsprinzip(1) Der Master protokolliert die Änderungen im Binärprotokoll. (2) Der Slave kopiert die Binärprotokollereignisse des Masters in sein Relay-Protokoll. Der E/A-Thread des Slaves liest Ereignisse aus dem Binärprotokoll des Masters und schreibt sie in das Relay-Protokoll. (3) Der Slave wiederholt die Ereignisse im Relay-Log und ändert die Daten so, dass sie seine eigenen widerspiegeln. Der SQL-Thread des Slaves liest Ereignisse aus dem Relay-Protokoll und spielt sie lokal erneut ab, um sie mit den Daten im Master in Einklang zu bringen. Schritte zur Implementierung von MySQL Master-Slave: 1. Verwenden Sie den Befehl mysqldump, um die Datenbank zu sichern. 2. Überprüfen Sie den Speicherort der Masterknoten-Binärdatei 3. Erstellen Sie einen Backup-Benutzer und autorisieren Sie ihn (Replikationsclient.Replikationsslave). 4. Ändern Sie die Server-ID des Servers. Sie muss sich von der Server-ID des Haupt-MySQL unterscheiden. Aktivieren Sie das Relay-Datum und deaktivieren Sie das Binärdatum. 5. Importieren Sie Daten aus der Datenbank und verwenden Sie den autorisierten Benutzer, um eine Verbindung zum Haupt-MySQL herzustellen 6. Starten Sie den Slave Die SQL-Sprache ist in folgende Kategorien unterteilt: Abfragesprache DQL, Steuersprache DCL, Manipulationssprache DML und Definitionssprache DDL. Transaktionskontrolle TCL. DQL-Anweisung (Data QUERY Languages): eine Datenbankdefinitionsanweisung zum Abfragen eines Abfrageblocks, der aus einer SELECT-Klausel, einer FROM-Klausel und einer WHERE-Klausel besteht, wie etwa: select–from–where–grouop by–having–order by–limit DDL-Anweisung (Data Definition Languages): d. h. Datenbankdefinitionsanweisung, die zum Erstellen von Tabellen, Indizes, Ansichten, gespeicherten Prozeduren, Triggern usw. in der Datenbank verwendet wird. Häufig verwendete Anweisungsschlüsselwörter sind CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAME. Die Struktur der Add-, Delete- und Modify-Tabelle DML-Anweisungen (Data Manipulation Language): Datenmanipulationsanweisungen zum Abfragen, Hinzufügen, Aktualisieren, Löschen usw. Häufig verwendete Anweisungsschlüsselwörter sind: SELECT, INSERT, UPDATE, DELETE, MERGE, CALL, EXPLAIN PLAN, LOCK TABLE, einschließlich allgemeiner Hinzufügungen, Löschungen, Änderungen und Abfragen. Hinzufügen, Löschen und Ändern von Tabellendaten DCL-Anweisung (Data Control Language): Datensteuerungsanweisung, die zum Erteilen/Widerrufen von Berechtigungen für die Datenbank und ihre Felder verwendet wird (DCL ist die Kurzbezeichnung für Data Control Language, die Befehle wie GRANT umfasst und sich hauptsächlich mit Rechten, Berechtigungen und anderen Steuerelementen des Datenbanksystems befasst.). Häufig verwendete Anweisungsschlüsselwörter sind: GRANT, REVOKE. TCL-Anweisungen (Transaction Control Language): Transaktionssteuerungsanweisungen, die zur Steuerung von Transaktionen verwendet werden. Häufig verwendete Anweisungsschlüsselwörter sind: COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION. 2. MySQL-Kompilierung und -Installation#!/bin/bash yum -y install make gcc gcc-c++ openssl openssl-devel pcre-devel gd cmake ncurses ncurses-devel id -u MySQL wenn [`echo $?` -ne 0 ]; Dann MySQL-Gruppenadd useradd -M -g mysql -s /sbin/nologin mysql fi wenn [ ! -d "/usr/local/mysql" ]; Dann mkdir -p /usr/local/mysql fi mkdir -p /data/mysql chown -R mysql:mysql /data/mysql cd /home/soft/ #Software-Speicherverzeichnis tar zxvf mysql-5.6.30.tar.gz cd mysql-5.6.30 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/data/mysql/data -DINSTALL_MANDIR=/usr/share/man -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=alle -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 machen && machen installieren chown -R mysql:mysql. chmod +x Skripte/mysql_install_db ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig mysqld auf cat> /etc/rc.d/init.d/mysqld <<'EOF' #mysql-Startskript #!/bin/sh # Copyright aufgegeben 1996 TCX DataKonsult AB & Monty Program KB & Detron HB # Diese Datei ist gemeinfrei und wird mit KEINER GARANTIE jeglicher Art geliefert # Start-/Stopp-Skript für den MySQL-Daemon. # Normalerweise wird dies in /etc/init.d abgelegt (zumindest auf Maschinen, die auf SYSV R4 basieren # Systeme) und verknüpft mit /etc/rc3.d/S99mysql und /etc/rc0.d/K01mysql. # Wenn dies erledigt ist, wird der MySQL-Server gestartet, wenn die Maschine # gestartet und heruntergefahren, wenn das System ausfällt. # Kommentare zur Unterstützung von chkconfig unter RedHat Linux # chkconfig: 2345 64 36 # Beschreibung: Eine sehr schnelle und zuverlässige SQL-Datenbank-Engine. # Kommentare zur Unterstützung von LSB-Init-Skriptkonventionen ### BEGINNEN INIT INFO # Bietet: mysql # Erforderlicher Start: $local_fs $network $remote_fs # Sollte starten: ypbind nscd ldap ntpd xntpd # Erforderlicher Stopp: $local_fs $network $remote_fs # Standard-Start: 2 3 4 5 # Standard-Stopp: 0 1 6 # Kurzbeschreibung: MySQL starten und stoppen # Beschreibung: MySQL ist eine sehr schnelle und zuverlässige SQL-Datenbank-Engine. ### ENDE INIT INFO # Wenn Sie MySQL an einem anderen Ort als /usr/local/mysql installieren, dann # müssen Sie eine der folgenden Aktionen ausführen, damit dieses Skript funktioniert: # # - Führen Sie dieses Skript aus dem MySQL-Installationsverzeichnis aus # - Erstellen Sie eine /etc/my.cnf-Datei mit den folgenden Informationen: # [mysqld] # basedir=<Pfad zum MySQL-Installationsverzeichnis> # - Fügen Sie das Obige zu einer beliebigen anderen Konfigurationsdatei hinzu (zum Beispiel ~/.my.ini) # und kopiere my_print_defaults nach /usr/bin # - Fügen Sie den Pfad zum MySQL-Installationsverzeichnis zur Variable basedir hinzu # unten. # # Wenn Sie andere MySQL-Variablen beeinflussen möchten, sollten Sie Ihre Änderungen vornehmen # in /etc/my.cnf, ~/.my.cnf oder anderen MySQL-Konfigurationsdateien. # Wenn Sie das Basisverzeichnis ändern, müssen Sie auch das Datenverzeichnis ändern. Diese können # durch Einstellungen in den MySQL-Konfigurationsdateien überschrieben. basedir=/usr/local/mysql Datenverzeichnis=/Daten/MySQL # Standardwert in Sekunden, nach dem das Skript eine Zeitüberschreitung beim Warten # für den Serverstart. # Der Wert hier wird durch den Wert in my.cnf überschrieben. # 0 bedeutet, überhaupt nicht zu warten # Negative Zahlen bedeuten, unendlich zu warten service_startup_timeout=900 # Verzeichnis für RedHat/SuSE sperren. lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql" # Die folgenden Variablen werden nur festgelegt, damit mysql.server Dinge finden kann. # Legen Sie einige Standardeinstellungen fest mysqld_pid_file_path= wenn test -z "$basedir" Dann basedir=/usr/local/mysql bindir=/usr/local/mysql/bin wenn test -z "$datadir" Dann datadir=/Daten/mysql/Daten fi sbindir=/usr/local/mysql/bin libexecdir=/usr/local/mysql/bin anders bindir="$basedir/bin" wenn test -z "$datadir" Dann Datenverzeichnis="$basedir/data" fi sbindir="$basedir/sbin" libexecdir="$basedir/libexec" fi # datadir_set wird verwendet, um zu bestimmen, ob datadir gesetzt wurde (und sollte es auch sein # *nicht* innerhalb des --basedir=-Handlers festgelegt.) datadir_set= # Verwenden Sie nach Möglichkeit LSB-Init-Skriptfunktionen zum Drucken von Nachrichten # lsb_functions="/lib/lsb/init-functions" wenn test -f $lsb_functions; dann . $lsb_funktionen anders log_success_msg() { echo " ERFOLGREICH! $@" } log_failure_msg() { echo " FEHLER! $@" } fi PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin" Exportpfad mode=$1 # starten oder stoppen [ $# -ge 1 ] && verschieben other_args="$*" # ungewöhnlich, aber erforderlich, wenn es von einer RPM-Upgrade-Aktion aufgerufen wird # Erwartet: „--skip-networking --skip-grant-tables“ # Sie werden hier absichtlich nicht überprüft, da es in der Verantwortung liegt # des Autors der „spec“-Datei, um nur korrekte Argumente anzugeben. Fall `echo "testing\c"`, `echo -n testing` in *c*,-n*) echo_n= echo_c= ;; *c*,*) echo_n=-n echo_c= ;; *) echo_n= echo_c='\c' ;; esac parse_server_arguments() { für arg tun Fall "$arg" in --basedir=*) basedir=`echo "$arg" | sed -e ‚s/^[^=]*=//‘` bindir="$basedir/bin" wenn test -z "$datadir_set"; dann Datenverzeichnis="$basedir/data" fi sbindir="$basedir/sbin" libexecdir="$basedir/libexec" ;; --datadir=*) datadir=`echo "$arg" | sed -e ‚s/^[^=]*=//‘` datadir_set=1 ;; --pid-file=*) mysqld_pid_file_path=`echo "$arg" | sed -e ‚s/^[^=]*=//‘` ;; --service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed -e ‚s/^[^=]*=//'` ;; esac Erledigt } warte_auf_pid () { verb="$1" # erstellt | entfernt pid="$2" # Prozess-ID des Programms, das die PID-Datei bearbeitet pid_file_path="$3" # Pfad zur PID-Datei. ich = 0 avoid_race_condition="durch erneute Prüfung" während Test $i -ne $service_startup_timeout; mache Fall "$verb" in 'erstellt') # Warten Sie, bis eine PID-Datei erstellt wird. test -s "$pid_file_path" && i='' && break ;; 'ENTFERNT') # warten, bis diese PID-Datei verschwindet Prüfung! -s "$pid_file_path" && i='' && break ;; *) echo "wait_for_pid () Verwendung: wait_for_pid erstellt|entfernt pid pid_file_path" Ausfahrt 1 ;; esac # wenn der Server nicht läuft, wird die PID-Datei nie aktualisiert wenn test -n "$pid"; dann wenn kill -0 "$pid" 2>/dev/null; dann : # der Server läuft noch anders # Der Server wurde möglicherweise zwischen der letzten PID-Dateiprüfung und jetzt beendet. wenn test -n "$avoid_race_condition"; dann race_condition vermeiden="" weiter # Nochmals prüfen. fi # es gibt nichts, was die Datei beeinflussen würde. log_failure_msg "Der Server wurde beendet, ohne die PID-Datei ($pid_file_path) zu aktualisieren." return 1 # nicht mehr warten. fi fi echo $echo_n ".$echo_c" i=`Ausdruck $i + 1` Schlaf 1 Erledigt wenn test -z "$i" ; dann log_erfolg_msg Rückgabe 0 anders log_failure_msg Rückgabe 1 fi } # Argumente aus der Datei my.cnf abrufen, # die einzige Gruppe, die von nun an gelesen wird, ist [mysqld] wenn test -x ./bin/my_print_defaults Dann print_defaults="./bin/my_print_defaults" elif test -x $bindir/my_print_defaults Dann print_defaults="$bindir/meine_druck_defaults" elif test -x $bindir/mysql_print_defaults Dann print_defaults="$bindir/mysql_print_defaults" anders # Versuchen Sie, das Basisverzeichnis in /etc/my.cnf zu finden conf=/etc/meine.cnf drucken_standardwerte= wenn test -r $conf Dann subpat='^[^=]*basedir[^=]*=\(.*\)$' dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf` für d in $dirs Tun d=`echo $d | sed -e 's/[ ]//g'` wenn test -x "$d/bin/my_print_defaults" Dann print_defaults="$d/bin/meine_druck_defaults" brechen fi wenn test -x "$d/bin/mysql_print_defaults" Dann print_defaults="$d/bin/mysql_print_defaults" brechen fi Erledigt fi # Hoffe, es ist im PATH ... aber ich bezweifle es test -z "$print_defaults" && print_defaults="meine_print_defaults" fi # # Standarddatei aus 'basedir' lesen. Wenn dort keine Standarddatei vorhanden ist, # prüfen, ob es sich am alten (veralteten) Ort (datadir) befindet und von dort lesen # extra_args="" wenn test -r "$basedir/my.cnf" Dann extra_args="-e $basedir/my.cnf" anders wenn test -r "$datadir/my.cnf" Dann extra_args="-e $datadir/my.cnf" fi fi parse_server_arguments `$print_defaults $extra_args mysqld-Server mysql_server mysql.server` # # PID-Datei festlegen, falls nicht angegeben # wenn test -z "$mysqld_pid_file_path" Dann mysqld_pid_file_path=$datadir/`hostname`.pid anders Fall "$mysqld_pid_file_path" in /* ) ;; * )mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;; esac fi Fall "$mode" in 'Start') # Daemon starten # Absicherung (relative Pfade, Core Dumps...) cd $basedir echo $echo_n "MySQL wird gestartet" wenn test -x $bindir/mysqld_safe Dann # Geben Sie mysqld zusätzliche Argumente mit der Datei my.cnf. Dieses Skript # kann beim nächsten Upgrade überschrieben werden. $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & wait_for_pid hat "$!" erstellt "$mysqld_pid_file_path"; Rückgabewert=$? # Sperre für RedHat / SuSE erstellen wenn test -w "$lockdir" Dann berühren Sie "$lock_file_path" fi beenden $return_value anders log_failure_msg "MySQL-Server konnte nicht gefunden werden ($bindir/mysqld_safe)" fi ;; 'stoppen') # Daemon stoppen. Wir verwenden hier ein Signal, um nicht wissen zu müssen, # Root-Passwort. wenn test -s "$mysqld_pid_file_path" Dann mysqld_pid=`cat "$mysqld_pid_Dateipfad"` wenn (kill -0 $mysqld_pid 2>/dev/null) Dann echo $echo_n "MySQL wird heruntergefahren" Beenden Sie $mysqld_pid # mysqld sollte die PID-Datei beim Beenden entfernen, warten Sie also darauf. wait_for_pid hat "$mysqld_pid" "$mysqld_pid_file_path" entfernt; Rückgabewert=$? anders log_failure_msg "MySQL-Serverprozess #$mysqld_pid läuft nicht!" rm "$mysqld_pid_dateipfad" fi # Sperre für RedHat / SuSE löschen wenn test -f "$lock_file_path" Dann rm -f "$lock_file_pfad" fi beenden $return_value anders log_failure_msg "MySQL-Server-PID-Datei konnte nicht gefunden werden!" fi ;; 'Neustart') # Stoppen Sie den Dienst und unabhängig davon, ob er # läuft oder nicht, starten Sie es erneut. wenn $0, stopp $other_args; dann $0 Start $andere_args anders log_failure_msg "Der laufende Server konnte nicht gestoppt werden. Daher wird ein Startversuch abgelehnt." Ausfahrt 1 fi ;; 'neu laden'|'erzwungenes Neuladen') wenn test -s "$mysqld_pid_file_path" ; dann mysqld_pid lesen < "$mysqld_pid_file_path" kill -HUP $mysqld_pid && log_success_msg "MySQL-Dienst wird neu geladen" berühren Sie "$mysqld_pid_file_path" anders log_failure_msg "MySQL PID-Datei konnte nicht gefunden werden!" Ausfahrt 1 fi ;; 'Status') # Überprüfen Sie zunächst, ob die PID-Datei vorhanden ist wenn test -s "$mysqld_pid_file_path" ; dann mysqld_pid lesen < "$mysqld_pid_file_path" wenn kill -0 $mysqld_pid 2>/dev/null; dann log_success_msg "MySQL läuft ($mysqld_pid)" Ausfahrt 0 anders log_failure_msg "MySQL läuft nicht, aber die PID-Datei existiert" Ausfahrt 1 fi anders # Versuchen Sie, den passenden mysqld-Prozess zu finden mysqld_pid=`pidof $libexecdir/mysqld` wenn test -z $mysqld_pid; dann wenn test -f "$lock_file_path" ; dann log_failure_msg "MySQL läuft nicht, aber die Sperrdatei ($lock_file_path) existiert" Ausfahrt 2 fi log_failure_msg "MySQL läuft nicht" Ausfahrt 3 anders log_failure_msg „MySQL läuft, aber die PID-Datei konnte nicht gefunden werden“ Ausfahrt 4 fi fi ;; *) # Verwendung Basisname=`Basisname "$0"` echo "Verwendung: $basename {start|stop|restart|reload|force-reload|status} [MySQL-Serveroptionen]" Ausfahrt 1 ;; esac Ausfahrt 0 Ende der Laufzeit cat> /etc/my.cnf <<'EOF' #mysql-Konfigurationsdatei [Client] #password = Ihr_Passwort Port = 3306 Socket = /tmp/mysql.sock # Hier folgen Einträge für einige spezifische Programme # Der MySQL-Server [mysqld] Port = 3306 Socket = /tmp/mysql.sock externe Verriegelung überspringen Schlüsselpuffergröße = 384 M max_allowed_packet = 64M table_open_cache = 512 Sortierpuffergröße = 2 M Lesepuffergröße = 2 M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64 M Thread-Cache-Größe = 8 Abfrage-Cachegröße = 32 M # Versuchen Sie die Anzahl der CPUs*2 für Thread_Concurrency Thread_Parallelität = 8 basedir = /usr/local/mysql Datenverzeichnis = /data/mysql max_verbindungen = 5000 lange_Abfragezeit = 1 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log # Lauschen Sie überhaupt nicht auf einem TCP/IP-Port. Dies kann eine Sicherheitsverbesserung sein, # wenn alle Prozesse, die eine Verbindung zu mysqld herstellen müssen, auf demselben Host ausgeführt werden. # Die gesamte Interaktion mit mysqld muss über Unix-Sockets oder Named Pipes erfolgen. # Beachten Sie, dass die Verwendung dieser Option ohne Aktivierung von Named Pipes unter Windows # (über die Option „enable-named-pipe“) macht mysqld unbrauchbar! Kleinbuchstaben-Tabellennamen = 1 # Replikationsmasterserver (Standard) # Binäre Protokollierung ist für die Replikation erforderlich #log-bin=mysql-bin Namensauflösung überspringen # erforderliche eindeutige ID zwischen 1 und 2^32 - 1 # ist standardmäßig 1, wenn der Master-Host nicht festgelegt ist # funktioniert aber nicht als Master, wenn es weggelassen wird #Server-ID = 1 # Binäres Logging - für Slaves nicht erforderlich, aber empfohlen #log-bin=mysql-bin # # Binäres Protokollierungsformat – gemischt empfohlen #binlog_format=gemischt # Entfernen Sie die folgenden Kommentare, wenn Sie InnoDB-Tabellen verwenden #innodb_data_home_dir = /Daten/mysql/Daten #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend #innodb_log_group_home_dir = /Daten/mysql/Daten # Sie können .._buffer_pool_size auf bis zu 50 - 80 % einstellen Anzahl der RAM, aber achten Sie darauf, die Speichernutzung nicht zu hoch einzustellen innodb_buffer_pool_size = 4096 M #innodb_additional_mem_pool_size = 20 M # Setze .._log_file_size auf 25 % der Pufferpoolgröße innodb_log_file_size = 512 M #innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 0 #innodb_lock_wait_timeout = 50 [mysqldump] schnell max_allowed_packet = 64M [mysql] kein automatisches Wiederaufwärmen # Entfernen Sie das nächste Kommentarzeichen, wenn Sie mit SQL nicht vertraut sind #sichere-updates [myisamchk] Schlüsselpuffergröße = 256 M Sortierpuffergröße = 256 M Lesepuffer = 2M Schreibpuffer = 2M [mysqlhotcopy] Interaktives Timeout Ende der Laufzeit ln -s /usr/local/mysql/bin/mysqladmin /usr/bin ln -s /usr/local/mysql/lib/mysql /usr/lib ln -s /usr/local/mysql/include/mysql /usr/include/mysql mkdir /var/lib/mysql ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile Schlaf 2 Quelle /etc/Profil Dienst MySQLD starten Schlaf 5 cd /usr/local/mysql/bin && mysqladmin -uroot password 'mysql' #Autorisieren Sie das Passwort des Root-Benutzers Quelle /etc/Profil 3. Master-Slave-Konfiguration1. Überprüfen Sie, ob die Masterdatenbank Daten enthält, und autorisieren Sie dann Benutzer mit Replikationsberechtigungen mysql> Datenbank db1 erstellen; mysql> verwende db1 mysql> Tabelle erstellen t1(id int, name varchar(12)); mysql> in t1-Werte einfügen (1, „Tom“), (2, „Jerry“), (3, „Jack“); mysql> gewähre Replikations-Slave, Replikations-Client auf *.* an „backuser“@„192.168.142.130“, identifiziert durch „mysqll“; mysql> gewähre Replikations-Slave, Replikations-Client auf *.* an 'backuser'@'192.168.142.131', identifiziert durch 'mysql'; mysql> Berechtigungen leeren; 2. Ändern Sie die Konfigurationsdateien jeder Datenbank und starten Sie die Datenbank neu vi /etc/my.cnf #Hauptbibliothekskonfigurationsdatei server-id=1 log-bin=mysql-bin binlog-do-db=db1 binlog-ignore-db=mysql vi /etc/my.cnf #Konfigurationsdatei der Slave-Bibliothek server-id=2 #Die ID der Slave-Bibliothek kann nicht mit der der Master-Bibliothek identisch sein, andere Slave-Bibliotheken werden dahinter angeordnet log-bin=relay-bin replicate-do-db=db1 #DB1-Datenbank synchronisieren replicate-ignore-db=mysql #MySQL-Datenbank nicht synchronisieren read_only #Nur-Lese-Dienst mysqld restart 3. Die Master-Datenbank sperrt die Tabelle zur Sicherung und überträgt die Datei dann in die Slave-Datenbank mysql> Tabellen mit Lesesperre leeren; #Sperren Sie die Mastertabelle, um das Schreiben neuer Daten zu verhindernmysql> Masterstatus anzeigen; #Den Masterstandortknoten anzeigenÖffnen Sie ein neues Terminal-Backup: mysqldump -u root -p --default-character-set=utf8 --opt -Q -R --skip-lock-tables db1 > /root/db1.sql scp /root/db1.sql [email protected]:/root scp /root/db1.sql [email protected]:/root 4. Daten aus der Datenbank importieren und dann zum Knoten der Hauptdatenbank wechseln mysql -u root -p mysql> Datenbank db1 erstellen; mysql> verwende db1 mysql> Quelle /root/db1.sql mysql> ändere Master in master_host='192.168.142.129',master_user='backuser',master_password='mysql',master_log_file='mysql-bin.000001',master_log_pos=120; mysql> Slave starten; mysql> Slave-Status anzeigen\G 5. Entsperren Sie die Hauptdatenbank mysql> Tabellen entsperren; Die obige Konfiguration ist auch auf die Neukonfiguration von Master und Slave anwendbar, wenn Master und Slave nicht synchron sind. 4. Master-Slave-Asynchronität1. Ursachen der Asynchronität Netzwerkverzögerung Inkonsistente Belastung der Master- und Slave-Rechner Inkonsistente max_allowed_packet-Einstellungen Inkonsistente Schlüsselwert- und Auto-Increment-Schritteinstellungen verursachen Master-Slave-Inkonsistenz Im Falle einer anormalen MySQL-Ausfallzeit ist es sehr wahrscheinlich, dass sync_binlog=1 oder innodb_flush_log_at_trx_commit=1 nicht gesetzt ist. Die Binlog- oder Relaylog-Datei ist beschädigt, was zu Inkonsistenzen zwischen Master und Slave führt. Master und Slave sind aufgrund eines Fehlers in MySQL selbst nicht synchron. Inkonsistente Versionen, insbesondere wenn die höhere Version der Master und die niedrigere Version der Slave ist. Die auf der Master-Datenbank unterstützte Funktion wird auf der Slave-Datenbank nicht unterstützt. 2. Lösung (1) Ignorieren Sie den Fehler und setzen Sie die Synchronisierung fort Diese Methode eignet sich für Situationen, in denen sich die Daten der Master- und Slave-Datenbanken nicht sehr unterscheiden oder die Daten nicht vollständig vereinheitlicht werden können und die Datenanforderungen nicht streng sind. Sklave stoppen; setze globalen sql_slave_skip_counter = 1; Slave starten; Slave-Status anzeigen\G (2) Wiederherstellung der Master-Slave-Beziehung Beziehen Sie sich auf die obige Konfiguration, um die Master-Datenbanktabelle zu sperren und sie wieder zu einem Master-Slave zu machen.
Dies ist das Ende dieses Artikels mit der detaillierten Erklärung der Probleme mit der Master-Slave-Konstruktion und Asynchronität in MySQL 5.6. Weitere Informationen zur Master-Slave-Konstruktion und Asynchronität von MySQL 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:
|
<<: Detaillierte Erklärung des Plattformbusses des Linux-Treibers
>>: So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei
In diesem Artikel wird der spezifische Code für C...
Verwenden Sie das Linux-Dienstprogramm certbot, u...
Dieser Artikel stellt die von Webdesign-Meistern ...
Inhaltsverzeichnis Holen Sie sich die Zeit in der...
In diesem Artikelbeispiel wird der spezifische Co...
Lassen Sie uns ohne weitere Umschweife den Screen...
Informationen zur Bedienung finden Sie hier in de...
Inhaltsverzeichnis Stellen Sie nginx auf Server1 ...
Inhaltsverzeichnis 1. Frontend-Steuerung 1. In de...
Auslassungspunkte werden angezeigt, wenn mehrzeil...
Nach chinesischem Brauch feiern wir das neue Jahr...
1. Grundlegende Spezifikationen (1) Es muss die I...
Inhaltsverzeichnis Szeneneinführung Hohe Reaktion...
Zusammenfassen Globale Umgebung ➡️ Fenster Normal...
Dieser Artikel veranschaulicht anhand von Beispie...