Maison  >  Article  >  base de données  >  Explication détaillée de la configuration d'une instance maître-esclave pour la réplication maître-esclave MySQL 5.7.18

Explication détaillée de la configuration d'une instance maître-esclave pour la réplication maître-esclave MySQL 5.7.18

小云云
小云云original
2017-12-25 11:21:021894parcourir

Cet article présente principalement le tutoriel détaillé de la réplication maître-esclave MySQL5.7.18 (un maître et un esclave). J'espère que cela pourra aider tout le monde. MySQL utilise 3 threads pour effectuer la fonction de réplication (dont l'un sur le serveur maître et les deux autres sur le serveur esclave. Présentons le contenu de cet article en détail.

1. Principe de réplication

Le maître écrit des mises à jour dans les fichiers journaux binaires et maintient un index des fichiers pour suivre la rotation des journaux. Ces journaux enregistrent les mises à jour envoyées à l'esclave. Lorsqu'un esclave se connecte au maître, il informe le maître que l'esclave. est dans le journal. L'emplacement de la dernière mise à jour réussie est lu. L'esclave reçoit toutes les mises à jour survenues depuis, puis bloque et attend que le maître soit informé des nouvelles mises à jour.

MySQL utilise 3 threads. pour exécuter la fonction de réplication (où 1 sur le serveur maître et les deux autres sur le serveur esclave. Lorsque START SLAVE est émis, le serveur esclave crée un thread d'E/S pour se connecter au serveur maître et lui permet d'envoyer les instructions enregistrées dans son journal binaire. Un thread envoie le contenu du journal binaire au serveur esclave

Ce thread lit le contenu envoyé par le thread Binlog Dump du serveur principal et transfère les données au thread d'E/S du serveur esclave. Copié dans un fichier local dans le répertoire de données du serveur esclave, c'est-à-dire le journal de relais. Le troisième thread est le thread SQL, qui est créé à partir du serveur pour lire le journal de relais et exécuter les mises à jour contenues dans le journal

. 2. Préparation du serveur

Version du système d'exploitation : Red Hat Enterprise Linux Server version 6.7 (Santiago)

IP maître (maître) : 172.16.115.245 Nom d'hôte : mysql2 server_id : 245

IP de l'esclave (esclave) : 172.16.115.247 Nom d'hôte : mysql3 server_id:247

MySQL5.7.18 est installé sur les serveurs maître et esclave

3. -Détails de l'implémentation de la réplication esclave

1. Configurez un compte de connexion pour le serveur sur le serveur maître et accordez les autorisations REPLICATION SLAVE

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl@20170509';
2. Modifiez le fichier de configuration maître my.cnf <.>

ces deux-là. La valeur doit être définie. Après le réglage, redémarrez MySQL
server-id = 245
log_bin = /data/mysqllog/3306/bin_log/binlog

3 Sauvegardez les données complètes sur le maître

Instructions :
mysqldump -uroot -p'密码' --master-data=2 --single-transaction -R --triggers -A > /backup/all.sql

--master-data=.2 signifie enregistrer la position Binlog et la position du maître au moment de la sauvegarde

--single-transaction signifie obtenir un instantané cohérent

-R signifie sauvegarder les procédures stockées et fonctions
--triggres signifie déclencheurs de sauvegarde
-A signifie sauvegarder toutes les bibliothèques

4 Vérifiez le nom du journal binaire et l'emplacement de la sauvegarde de la bibliothèque principale

ou. allez dans le fichier de base de données qui vient d'être sauvegardé : vi all.sql
SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 79394496 |       |         |          |
+---------------+----------+--------------+------------------+-------------------+

5 Modifiez le fichier de configuration de la bibliothèque esclave my.cnf

read_only=ON (mode lecture seule)
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
Après le réglage, redémarrez MySQL.

6. Restaurez la sauvegarde maître sur le serveur esclave

7. Arrêtez la bibliothèque esclave, configurez les paramètres maître-esclave et ouvrez la bibliothèque esclave.

mysql -u root -p'密码' < all.sql

8. Afficher les processus liés au maître et à l'esclave

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:
thread de vidage du Binlog maître :

thread IO/SQL esclave :

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. À ce stade, la configuration maître-esclave est terminée. Vous pouvez créer des bases de données, des tables et d'autres opérations sur le serveur maître pour voir si la base de données esclave est synchronisée !

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

Recommandations associées :


Réplication maître-esclave MySQL setup_MySQL

Comment MySQL implémente la réplication maître-esclave processus Explication détaillée d'un exemple (photo)

Analyse du principe et de la configuration de la réplication maître-esclave MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn