Heim Datenbank MySQL-Tutorial Detaillierte Erläuterung des Beispielcode-Sharings der Master-Slave-Replikation von MySQL5.6 unter Centos7

Detaillierte Erläuterung des Beispielcode-Sharings der Master-Slave-Replikation von MySQL5.6 unter Centos7

Mar 29, 2017 pm 01:41 PM

In diesem Artikel wird hauptsächlich die detaillierte Erklärung der Master-Slave-Replikation von MySQL5.6 unter Centos7 vorgestellt. Der Herausgeber findet es ziemlich gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

1. Einführung in die MySQL-Master-Slave-Replikation

Die Master-Slave-Replikation von MySQL ist nicht aktiviert Die Datenbankfestplatte Die Datei wird direkt kopiert, aber zur Synchronisierung über das logische Binlog-Protokoll auf den lokalen Server kopiert. Anschließend liest der lokale Thread die SQL-Anweisung im Protokoll und wendet sie erneut auf die MySQL-Datenbank .

MySQL-Datenbank unterstützt die Replikation in verschiedenen Geschäftsszenarien wie unidirektional, bidirektional, Kettenkaskade und Ring. Ein Server fungiert als Hauptserver-Master und empfängt Aktualisierungen von Benutzern, während ein oder mehrere andere Server fungieren als Der Slave-Server empfängt den Protokollinhalt aus der Binlog-Datei des Master-Servers, analysiert die SQL und aktualisiert sie auf dem Slave-Server.

Ein Master und ein Slave (A -> B, A ist der Master, B ist der Slave)

Ein Master und mehrere Slaves (A -> B, A -> C, A ist der Slave-Master, B und C sind Slaves)

Bidirektionale Dual-Master-Synchronisation (A -> B, B -> A, A und B sind beide Master und sichern sich gegenseitig)

Lineare Kaskade (A -> B -> C, A und B sind Master und Slaves und C ist Slave)

Ringkaskade (A -> B -> C -> ;A, A, B und C sind beide Master und jeder Knoten kann Daten schreiben)

2. Die Lösung zur Realisierung der Trennung von MySQL-Master-Slave-Lesen und -Schreiben

1. Erzielen Sie eine Lese- und Schreibtrennung durch Programme (

Urteilsaussage Schlüsselwort zur Verbindung der Master-Slave-Datenbank)

2. Erzielen Sie eine Lese- und Schreibtrennung durch Offenheit Quellsoftware (MySQL-Proxy, Amoeba, Stable Die Leistung und Funktionen sind durchschnittlich, nicht für den Produktionseinsatz empfohlen)

3. Unabhängige Entwicklung von DAL-Layer-Software

3 . Einführung in das Prinzip der MySQL-Master-Slave-Replikation

MySQL-Master-Slave-Replikation ist ein asynchroner Replikationsprozess, der eine Master-Bibliothek in eine Slave-Bibliothek kopiert zwischen Master und Slave wird durch drei Threads vervollständigt. Der SQL-Thread und der E/A-Thread befinden sich auf der Slave-Seite und der andere E/A-Thread befindet sich auf der Master-Seite.

Replikationsprinzip und -prozess

1. Führen Sie den Start-Slave-Befehl auf dem Slave aus, schalten Sie den Master-Slave-Replikationsschalter ein und starten Sie die Master-Slave-Replikation.

2. Der E/A-Thread des Slaves fordert den Master über den autorisierten Replikationsbenutzer auf dem Master an und fordert den angegebenen Speicherort des angegebenen Binlog-Protokolls an.

3. Nachdem der Master die Anfrage vom E/A-Thread des Slaves erhalten hat, liest sein eigener E/A-Thread, der für das Kopieren verantwortlich ist, die Protokollinformationen nach der angegebenen Position des angegebenen Binlog-Protokolls stapelweise Die Anforderungsinformationen des Slaves werden dann an den E/A-Thread des Slaves zurückgegeben. Zusätzlich zum Binlog-Protokoll enthalten die zurückgegebenen Informationen auch den neuen Binlog-Dateinamen des Masters und die nächste angegebene Aktualisierungsposition im neuen Binlog.

4. Der Slave erhält den Binlog-Protokollinhalt, der vom E/A-Thread auf dem Master gesendet wird. Nach der Protokolldatei und dem Standortpunkt wird der Binlog-Inhalt an das Ende des eigenen Relay-Protokolls geschrieben (Relay-Protokoll)-Datei nacheinander und zeichnen Sie den Namen und den Speicherort der neuen Binlog-Datei in der Master-Info-Datei auf, sodass der Master beim nächsten Lesen des neuen Binlog-Protokolls angewiesen werden kann, vom neuen Speicherort zu lesen des neuen Binlogs.

5. Der SQL-Thread des Slaves erkennt den neu hinzugefügten Protokollinhalt des E/A-Threads im lokalen Relay-Protokoll in Echtzeit und analysiert den Inhalt in der Relay-Protokolldatei zeitnah in SQL-Anweisungen. und analysieren Sie die SQL-Anweisungen in der Reihenfolge ihrer Positionen. Führen Sie diese SQL-Anweisungen aus. Relay-log.info zeichnet den Dateinamen und den Speicherort des aktuellen Anwendungs-Relay-Protokolls auf.

4. MySQL-Master-Slave-Replikationsvorgang

Ich habe hier mehrere Instanzen von MySQL auf einer einzelnen Maschine, 3306, 3308 , 3309


Die Master-Datenbank ist 3306 und die Slave-Datenbank ist 3308,3309

(1), in der Master-Datenbank


1. Legen Sie den Server-ID-Wert fest und öffnen Sie die Binlog-Funktion

> vi /etc/my.cnf
Nach dem Login kopieren
 [mysqld]
 #用于同步的每台机器server-id都不能相同

server-id = 10

log-bin = /data/mysql56/data/mysql-bin
Nach dem Login kopieren
2. Starten Sie die Hauptdatenbank neu

> service mysqld restart
Nach dem Login kopieren
3 -id

> mysql -uroot -p

> show variables like 'server_id';
Nach dem Login kopieren
4. Erstellen Sie ein Konto in der Bibliothek zum Kopieren aus der Bibliothek

> grant replication slave on *.* to "rep"@"%" identified by "123456";

> flush privileges;

> select user,host from mysql.user;

> show grants for rep@"%";
Nach dem Login kopieren
5. Schreibgeschützte Sperrtabelle der Hauptbibliotheksdatenbank (nicht schließen). das aktuelle Fenster)

> flush table with read lock;
Nach dem Login kopieren
Hauptbibliothek anzeigen

Status

> show master status;
Nach dem Login kopieren
6. Sichern Sie alle Datendateien in der Hauptdatenbank

> mysqldump -uroot -p -A -B | gzip > /data/mysql_bak.$(date +%F).sql.gz
Nach dem Login kopieren
7. Entsperren Sie nach dem Sichern der Hauptdatenbankdaten

> unlock tables;
Nach dem Login kopieren
8. Migrieren Sie die aus der Hauptbibliothek exportierten Daten in die Slave-Bibliothek

(2) auf dem Slave Bibliothek


1. Legen Sie den Server-ID-Wert fest und deaktivieren Sie die Binlog-Funktion

①Es gibt zwei Situationen, in denen Binlog in der Mitte geöffnet werden muss

②B der Kaskadensynchronisation A->B->C muss binlog öffnen

③Tun Sie es von der Slave-Bibliothek aus. Die Datenbanksicherung erfordert eine vollständige Sicherung und das Binlog-Protokoll muss eine vollständige Sicherung sein.

> vi /mysql-instance/3308/my.cnf 

[mysqld]

server-id = 11

relay-log = /mysql-instance/3308/relay-bin

relay-log-info-file = /mysql-instance/3308/relay-log.info
Nach dem Login kopieren
2. Starten Sie die Slave-Datenbank neu

> /mysql-instance/3308/mysql restart
Nach dem Login kopieren
3. Melden Sie sich bei der Slave-Datenbank an, um die Parameter zu überprüfen

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock

> show variables like 'log_bin';

> show variables like 'server_id';
Nach dem Login kopieren
von mysqldump aus der Hauptdatenbank exportiert nach Aus der Datenbank

> gzip -d /data/mysql_bak.2017-01-15.sql.gz
Nach dem Login kopieren
Stellen Sie die Master-Datenbankdaten in der Slave-Datenbank wieder her

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock < /data/mysql_bak.2017-01-15.sql
Nach dem Login kopieren
5. Melden Sie sich bei der Slave-Datenbank an und konfigurieren Sie die Replikation Parameter

CHANGE MASTER TO

MASTER_HOST=&#39;127.0.0.1&#39;,

MASTER_PORT=3306,

MASTER_USER=&#39;rep&#39;,

MASTER_PASSWORD=&#39;123456&#39;,

MASTER_LOG_FILE=&#39;mysql-bin.000001&#39;,

MASTER_LOG_POS=396;
Nach dem Login kopieren
Achten Sie auf MASTER_LOG_FILE oben und MASTER_LOG_POS. Dies sind die Informationen, die mit „Show Master Status“ in der Hauptbibliothek angezeigt werden können.

Sehen Sie sich die Datei „master.info“ an

> cat /mysql-instance/3308/data/master.info
Nach dem Login kopieren
6. Starten Sie den Slave-Datenbanksynchronisierungsschalter und testen Sie die Master-Slave-Replikation

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "start slave;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show slave status\G;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show slave status\G" | egrep "IO_Running|SQL_Running|_Behind_Master"
Nach dem Login kopieren
Testen Sie den Master -Slave-Replikation

> mysql -uroot -p -e "create database wohehe;"

> mysql -uroot -p -S /mysql-instance/3308/mysql.sock -e "show databases;"
Nach dem Login kopieren

五、mysql主从复制线程状态说明及用途

1、主库线程的同步状态

> show processlist\G; 


*************************** 1. row ***************************

   Id: 5

  User: rep

  Host: localhost:47605

   db: NULL

Command: Binlog Dump

  Time: 4728

 State: Master has sent all binlog to slave; waiting for binlog to be updated

  Info: NULL
Nach dem Login kopieren

说明主库线程已从binlog读取更新,发送到了从库,线程处理空闲状态,等待binlog的事件更新。

2、从库线程的同频状态

> show processlist\G; 

*************************** 2. row ***************************

   Id: 6

  User: system user

  Host:

   db: NULL

Command: Connect

  Time: 5305

 State: Slave has read all relay log; waiting for the slave I/O thread to update it

  Info: NULL
Nach dem Login kopieren

说明从库已读取所有中继日志,等待从库I/O线程的更新。

六、主从复制故障

如果我在从库上创建了一个库,然后去主库创建同名的库,那么这就会冲突了。

> show slave status; 

Slave_IO_Running: Yes

Slave_SQL_Running: No

Seconds_Behind_Master: NULL

Last_Error: Error &#39;Can&#39;t create database &#39;xxxxx&#39;; database exists&#39; on query. Default database: &#39;xxxxx&#39;. Query: &#39;create database xxxxx&#39;
Nach dem Login kopieren

对于该冲突解决方法

方法一

> stop slave;

#将同步指针移动下一个,如果多次不同步,可重复操作

> set global sql_slave_skip_counter = 1;

> start slave;
Nach dem Login kopieren

方法二

> vi /mysql-instance/3308/my.cnf 

#把可以忽略的错误号事先在配置文件中配置

slave-skip-errors = 1002,1007,1032
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispielcode-Sharings der Master-Slave-Replikation von MySQL5.6 unter Centos7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Download-Adressen und Versionsbeschreibungen für verschiedene Versionen von CentOS7-Images (einschließlich der Everything-Version) Download-Adressen und Versionsbeschreibungen für verschiedene Versionen von CentOS7-Images (einschließlich der Everything-Version) Feb 29, 2024 am 09:20 AM

Beim Laden von CentOS-7.0-1406 gibt es viele optionale Versionen. Für normale Benutzer wissen sie nicht, welche sie wählen sollen. Hier ist eine kurze Einführung: (1) CentOS-xxxx-LiveCD.ios und CentOS-xxxx-Was ist der Unterschied zwischen bin-DVD.iso? Ersteres hat nur 700 MB und letzteres 3,8 GB. Der Unterschied besteht nicht nur in der Größe, sondern der wesentlichere Unterschied besteht darin, dass CentOS-xxxx-LiveCD.ios nur in den Speicher geladen und ausgeführt und nicht installiert werden kann. Auf der Festplatte kann nur CentOS-xxx-bin-DVD1.iso installiert werden. (2) CentOS-xxx-bin-DVD1.iso, Ce

Schritte zum Aufrufen des CentOS 7-Notfallreparaturmodus Schritte zum Aufrufen des CentOS 7-Notfallreparaturmodus Jan 13, 2024 am 09:36 AM

Öffnen Sie die Centos7-Seite und erscheinen Sie: Willkommen im Notfallmodus! Geben Sie nach der Anmeldung „journalctl -xb“ ein, um Systemprotokolle anzuzeigen, „systemctlreboot“ zum Neustarten und „systemctldefault“, um erneut zu versuchen, in den Standardmodus zu booten. Giverootpasswordformaintenance(??Strg-D???): Lösung: r ausführen

Wie kann ich in CentOS 7 auf Junk-Dateien im Verzeichnis /tmp zugreifen und diese bereinigen? Wie kann ich in CentOS 7 auf Junk-Dateien im Verzeichnis /tmp zugreifen und diese bereinigen? Dec 27, 2023 pm 09:10 PM

Im tmp-Verzeichnis des Centos7-Systems befindet sich viel Müll. Wie sollten Sie den Müll löschen? Werfen wir einen Blick auf das ausführliche Tutorial unten. Um die Liste der Dateien im tmp-Dateiverzeichnis anzuzeigen, führen Sie den Befehl cdtmp/ aus, um zum aktuellen Dateiverzeichnis von tmp zu wechseln, und führen Sie den Befehl ll aus, um die Liste der Dateien im aktuellen Verzeichnis anzuzeigen. Wie nachfolgend dargestellt. Verwenden Sie den Befehl rm, um Dateien zu löschen. Beachten Sie, dass der Befehl rm Dateien dauerhaft aus dem System löscht. Daher wird empfohlen, vor dem Löschen der Datei eine Eingabeaufforderung zu geben. Verwenden Sie den Befehl rm-i file name, warten Sie, bis der Benutzer den Löschvorgang bestätigt (y) oder den Löschvorgang überspringt (n), und das System führt die entsprechenden Vorgänge aus. Wie nachfolgend dargestellt.

Wie lege ich Passwortregeln in Centos7 fest? Wie lege ich Passwortregeln in Centos7 fest? Jan 07, 2024 pm 01:17 PM

Legen Sie aus Sicherheitsgründen Passwortregeln fest. Legen Sie die Anzahl der Tage fest, nach denen Passwörter ablaufen. Der Benutzer muss das Passwort innerhalb von Tagen ändern. Diese Einstellung betrifft nur erstellte Benutzer, nicht vorhandene Benutzer. Wenn Sie auf einen vorhandenen Benutzer festlegen, führen Sie den Befehl „chage -M (days) (user)“ aus. PASS_MAX_DAYS60#Passwort-Ablaufzeit PASS_MIN_DAYS3#Anfängliche Passwort-Änderungszeit PASS_MIN_LEN8#Mindestpasswortlänge PASS_WARN_AGE7#Passwort-Ablaufzeit-Aufforderung Wiederholen Sie die Passwortbeschränkung, verwenden Sie [root@linuxprobe~]#vi/etc/pam.d/system-auth#nearline15:

Wie installiere ich die MBstring-Erweiterung unter CENTOS7? Wie installiere ich die MBstring-Erweiterung unter CENTOS7? Jan 06, 2024 pm 09:59 PM

1.UncaughtError:Calltoundefinedfunctionmb_strlen(); Wenn der obige Fehler auftritt, bedeutet dies, dass wir die mbstring-Erweiterung nicht installiert haben. 2. Geben Sie das PHP-Installationsverzeichnis cd/temp001/php-7.1.0/ext/mbstring ein. 3. Starten Sie phpize( /usr/local/bin /phpize oder /usr/local/php7-abel001/bin/phpize) Befehl zum Installieren der PHP-Erweiterung 4../configure--with-php-config=/usr/local/php7-abel

So installieren Sie MySQL in CentOS7 und stellen es so ein, dass es beim Booten automatisch startet So installieren Sie MySQL in CentOS7 und stellen es so ein, dass es beim Booten automatisch startet Jun 02, 2023 pm 08:36 PM

Centos7 verfügt nicht über eine MySQL-Datenbank. Die Standarddatenbank ist Mariadb (ein Zweig von MySQL). Sie können die MySQL-Datenbank manuell installieren, indem Sie die folgenden Schritte ausführen. 1. Laden Sie die RPM-Installationsdatei wgethttp://repo.mysql.com/mysql-community-release-el7.rpm herunter. 2. Führen Sie rpm aus, um rpm-ivhmysql-community-release-el7.rpm zu installieren, nachdem die Abhängigkeitsauflösung abgeschlossen ist , werden die folgenden Optionen angezeigt: dependenciesresolved =================================

Detaillierte Erläuterung des Dekomprimierungsdateibefehls (zip) unter Centos7 Detaillierte Erläuterung des Dekomprimierungsdateibefehls (zip) unter Centos7 Jan 07, 2024 pm 06:30 PM

1. Der komprimierte Ordner ist eine ZIP-Datei [root@cgls]#zip-rmydata.zipmydata2. Entpacken Sie mydata.zip in das Verzeichnis mydatabak [root@cgls]#unzipmydata.zip-dmydatabak3.mydata01 und mydata02.txt werden komprimiert mydata.zip[root@cgls]#zipmydata.zipmydata01mydata02.txt4. Dekomprimieren Sie direkt die Datei mydata.zip [root@cgls]#unzipmydata.zip5

Wie ändere und stelle ich die Standard-Tastenkombinationen von CentOS7 ein? Wie ändere und stelle ich die Standard-Tastenkombinationen von CentOS7 ein? Jan 09, 2024 pm 06:14 PM

Wenn die Standard-Tastenkombinationen mit den Tasten der von Ihnen verwendeten Software in Konflikt stehen oder Sie die Tastenkombinationen entsprechend Ihren eigenen Gewohnheiten verwenden müssen, müssen Sie die Standard-Tastenkombinationen ändern und festlegen. Wie ändere ich die Standard-Tastenkombinationen von CentOS7? Werfen wir einen Blick auf das ausführliche Tutorial unten. 1. Starten Sie das Centos7-System in der virtuellen Maschine und rufen Sie den Desktop auf. 2. Klicken Sie auf Anwendungen->System-Tools->Einstellungen in der oberen linken Ecke. 3. Rufen Sie die Einstellungsoberfläche auf und klicken Sie auf das Gerät Klicken Sie auf das Element auf der rechten Seite und drücken Sie die Tastenkombination, die auf der Tastatur festgelegt werden soll, um die Tastenkombination zu ändern (beachten Sie, dass einige nicht geändert werden können!). 5. Klicken Sie nach der Änderung, wie unten gezeigt, schließlich auf Einstellungen, um die Tastenkombination einzustellen Die Änderung ist abgeschlossen.

See all articles