Heim > Datenbank > MySQL-Tutorial > Hauptteil

Ausführliche Erläuterung zum Einrichten einer Master-Slave-Instanz für die MySQL5.7.18-Master-Slave-Replikation

小云云
Freigeben: 2017-12-25 11:21:02
Original
1948 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das detaillierte Tutorial zur Master-Slave-Replikation von MySQL5.7.18 vorgestellt (ein Master und ein Slave können darauf verweisen). MySQL verwendet 3 Threads, um die Replikationsfunktion auszuführen (einer davon befindet sich auf dem Master-Server und die anderen beiden auf dem Slave-Server). Lassen Sie uns den Inhalt dieses Artikels im Detail vorstellen.

1. Replikationsprinzip

Der Master schreibt Aktualisierungen in binäre Protokolldateien und verwaltet einen Index der Dateien, um die Protokollrotation zu verfolgen. Wenn ein Slave eine Verbindung zum Master herstellt, benachrichtigt er den Master steht im Protokoll. Der Slave empfängt alle seitdem erfolgten Updates und wartet darauf, dass der Master über neue Updates benachrichtigt wird um die Replikationsfunktion auszuführen (wobei 1 auf dem Master-Server und die anderen beiden auf dem Slave-Server). Wenn START SLAVE ausgegeben wird, erstellt der Slave-Server einen E/A-Thread, um eine Verbindung zum Master-Server herzustellen und ihn die darin aufgezeichneten Anweisungen senden zu lassen Sein Binärprotokoll. Ein Thread sendet den Inhalt des Binärprotokolls an den Slave-Server.

Dieser Thread liest den vom Hauptserver gesendeten Binlog-Dump-Thread und überträgt die Daten an den Slave-Server-E/A-Thread. Kopiert in eine lokale Datei im Datenverzeichnis des Slave-Servers, also in das Relay-Log. Der dritte Thread ist der SQL-Thread, der vom Server erstellt wird, um das Relay-Log zu lesen und die im Log enthaltenen Aktualisierungen auszuführen

. 2. Servervorbereitung

Betriebssystemversion: Red Hat Enterprise Linux Server Version 6.7 (Santiago)

Master (Master) IP: 172.16.115.245 Hostname: mysql2 server_id: 245

Slave (Slave) IP: 172.16.115.247 Hostname: mysql3 server_id:247

MySQL5.7.18 ist sowohl auf dem Master- als auch auf dem Slave-Server installiert

3 -Slave-Replikationsimplementierungsdetails

1. Richten Sie ein Verbindungskonto für den Server auf dem Master-Server ein und gewähren Sie REPLICATION SLAVE-Berechtigungen

2. Ändern Sie die Master-Konfigurationsdatei my.cnf
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl@20170509';
Nach dem Login kopieren

Diese beiden Werte müssen eingestellt werden.
server-id = 245
log_bin = /data/mysqllog/3306/bin_log/binlog
Nach dem Login kopieren

3. Sichern Sie die vollständigen Daten auf dem Master.

🎜>
mysqldump -uroot -p'密码' --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql
Nach dem Login kopieren
--master-data=. 2 bedeutet, die Binlog-Position und die Position des Masters zum Zeitpunkt der Sicherung aufzuzeichnen

--single-transaction bedeutet, einen konsistenten Snapshot zu erhalten

-R bedeutet, gespeicherte Prozeduren zu sichern und Funktionen

--triggers bedeutet Backup-Trigger
-A bedeutet Backup aller Bibliotheken

4 Überprüfen Sie den Binlog-Namen und den Speicherort der Hauptbibliothekssicherung

oder Gehen Sie zur gerade gesicherten Datenbankdatei: vi all.sql

SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 79394496 |       |         |          |
+---------------+----------+--------------+------------------+-------------------+
Nach dem Login kopieren
5. Ändern Sie die Slave-Bibliothekskonfigurationsdatei my.cnf

read_only=ON (schreibgeschützter Modus)

server-id = 247 (唯一,不能与主库一样,一般设为服务器IP后3位)
log_bin = /data/mysql/logdir/3306/bin_log/binlog
innodb_file_per_table = ON
skip_name_resolve = ON
relay_log = /data/mysql/logdir/3306/relay_log/relay.log
binlog-format = row
log-slave-updates = true
Nach dem Login kopieren
Nach der Einstellung MySQL neu starten.

6. Stellen Sie die Master-Sicherung auf dem Slave-Server wieder her

7. Stoppen Sie die Slave-Bibliothek, konfigurieren Sie die Master-Slave-Parameter und öffnen Sie die Slave-Bibliothek.

mysql -u root -p'密码' < all.sql
Nach dem Login kopieren

8. Master- und Slave-bezogene Prozesse anzeigen

mysql> stop slave; #暂停从库
mysql>CHANGE MASTER TO MASTER_HOST='172.16.115.245',MASTER_USER='repl', MASTER_PASSWORD='repl@20170509',MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=154;
mysql> start slave; #启动复制
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.115.245
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 104634190
Relay_Log_File: relay.000003
Relay_Log_Pos: 104632819
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0
Last_Error: 
Skip_Counter: 0
Exec_Master_Log_Pos: 104634190
Relay_Log_Space: 104634713
Until_Condition: None
Until_Log_File: 
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error: 
Last_SQL_Errno: 0
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 245
Master_UUID: 4f545573-3170-11e7-b903-000c29462d8c
Master_Info_File: /data/mysql/datadir/3306/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind: 
Last_IO_Error_Timestamp: 
Last_SQL_Error_Timestamp: 
Master_SSL_Crl: 
Master_SSL_Crlpath: 
Retrieved_Gtid_Set: 
Executed_Gtid_Set: 
Auto_Position: 0
Replicate_Rewrite_DB: 
Channel_Name: 
Master_TLS_Version:
Nach dem Login kopieren
Master-Binlog-Dump-Thread:

Slave-IO/SQL-Thread:

mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 13
User: repl
Host: 172.16.115.247:44602
db: NULL
Command: Binlog Dump
Time: 76514
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
Nach dem Login kopieren

9. Zu diesem Zeitpunkt ist die Master-Slave-Konfiguration abgeschlossen. Sie können Datenbanken, Tabellen und andere Vorgänge auf dem Master-Server erstellen, um zu sehen, ob die Slave-Datenbank synchronisiert ist!

mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 10
User: system user
Host: 
db: NULL
Command: Connect
Time: 81148
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 12
User: system user
Host: 
db: NULL
Command: Connect
Time: 5
State: Reading event from the relay log
Info: NULL
Nach dem Login kopieren

Verwandte Empfehlungen:


Mysql Master-Slave-Replikationssetup_MySQL

Wie MySQL die Master-Slave-Replikation implementiert Prozess Detaillierte Beispielerklärung (Bild)

Analyse des Prinzips und der Konfiguration der MySQL-Master-Slave-Replikation

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung zum Einrichten einer Master-Slave-Instanz für die MySQL5.7.18-Master-Slave-Replikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!