Maison >base de données >tutoriel mysql >Explication détaillée de la configuration d'une instance maître-esclave pour la réplication maître-esclave MySQL 5.7.18
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 serveurVersion 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:247MySQL5.7.18 est installé sur les serveurs maître et esclave3. -Détails de l'implémentation de la réplication esclave1. 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
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 = trueAprè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!