Principe de réplication maître-esclave
La réplication maître-esclave de la base de données MySQL est basée sur le journal binaire MySQL et le serveur esclave qui doit être synchronisé est répliqué via le journal du journal bin. Il comprend principalement trois threads (2 threads d'E/S, 1 thread SQL). Il a un lien inévitable avec la séparation lecture-écriture de MySQL.Tout d'abord, la réplication maître-esclave doit être déployée et la séparation lecture-écriture des données ne peut être effectuée qu'une fois terminée. Un fichier serveur fait office de serveur maître, acceptant les mises à jour de contenu des utilisateurs, et un ou plusieurs autres serveurs agissent comme serveurs esclaves, acceptant le contenu du journal du fichier binlog sur le serveur maître , analysant SQL et effectuant une nouvelle mise à jour vers l'esclave. serveur . Rendre cohérentes les données des serveurs maître et esclave.
En termes simples, une fois que les deux machines A et B sont maître-esclave, les données sont écrites sur A et l'autre machine B écrira également des données pour réaliser les étapes de réplication maître-esclave de synchronisation des données en temps réel.
1. Lorsque le nœud maître effectue des opérations d'insertion, de mise à jour et de suppression, il sera écrit dans le journal binaire dans l'ordre.
2.salve est connecté à la bibliothèque principale principale depuis la bibliothèque.
3. Lorsque le journal binaire du nœud maître change, le thread de vidage du journal binaire avertira tous les nœuds esclaves et transmettra le contenu du journal binaire correspondant aux nœuds esclaves.
4. Une fois que le thread d'E/S a reçu le contenu du journal binaire, il écrit le contenu dans le journal de relais local.
5. Le thread SQL lit le journal de relais écrit par le thread d'E/S et effectue les opérations correspondantes sur la base de données esclave en fonction du contenu du journal de relais.
Configuration de la bibliothèque principale
1. server_id définir et activer les paramètres binlog
[root@localhost ~]# vim /etc/my.cnf
id_serveur=1
log_bin=mysql_bin
2. Redémarrez le service MySQL
[root@localhost ~]# systemctl redémarrer mysqld
3. Connectez-vous à l'utilisateur autorisé MySQL
mysql> accorde l'esclave de réplication sur *.* à l'ide 'rep1'@'192.168.244.%'
Requête OK, 0 ligne affectée, 1 avertissement (0,00 s)
afficher les informations
mysql> mysql> afficher l'état du maître ;
Configurer depuis la bibliothèque
1. Définissez la valeur server_id et redémarrez le service mysql
[root@localhost ~]# vim /etc/my.cnf
id_serveur=2
[root@localhost ~]# systemctl redémarrer mysqld
2. Configurer la synchronisation de la bibliothèque maître-esclave
mysql> changer le maître en
MASTER_HOST='192.168.244.146',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='RedHat@123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154 ;
3. Démarrez le commutateur de synchronisation de la bibliothèque esclave
mysql> démarrer l'esclave ;
Requête OK, 0 ligne affectée (0,00 s)
vérifier l'état
mysql> afficher le statut de l'esclave;