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.cnfGRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl@20170509';
server-id = 245 log_bin = /data/mysqllog/3306/bin_log/binlog
3. Sichern Sie die vollständigen Daten auf dem Master.
🎜>mysqldump -uroot -p'密码' --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql
--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 | | | | +---------------+----------+--------------+------------------+-------------------+
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
7. Stoppen Sie die Slave-Bibliothek, konfigurieren Sie die Master-Slave-Parameter und öffnen Sie die Slave-Bibliothek.
mysql -u root -p'密码' < all.sql
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:
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
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
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!