Maison  >  Article  >  base de données  >  Implémenter la réplication maître-esclave MySQL

Implémenter la réplication maître-esclave MySQL

coldplay.xixi
coldplay.xixiavant
2020-08-29 16:45:302823parcourir

Implémenter la réplication maître-esclave MySQL

[Recommandations d'apprentissage associées : tutoriel mysql]

Le serveur de test utilise centos7.2 pour les configurations pertinentes

Le contenu de l'article fait référence à la synchronisation maître-esclave de la base de données MySQL pour obtenir une séparation en lecture-écriture

Vue d'ensemble

À grande échelle Pour qu'un site Web puisse gérer un grand nombre d'accès simultanés, il ne suffit pas de mettre en œuvre un équilibrage de charge distribué sur le site Web. En ce qui concerne la couche de gestion des données et la couche d'accès aux données, si la structure de données traditionnelle est toujours utilisée, ou si un seul serveur est utilisé pour gérer autant d'opérations de connexion à la base de données, la base de données s'effondrera inévitablement, surtout si les données sont perdues. les conséquences seront inimaginables. À ce stade, nous verrons comment réduire les connexions aux bases de données, et passons au sujet d'aujourd'hui.

Utilisez la base de données maître-esclave pour séparer la lecture et l'écriture, partageant ainsi la pression sur la base de données maître. Déployez MySQL sur plusieurs serveurs, considérez l'un d'eux comme base de données maître et les autres comme bases de données esclaves pour réaliser la synchronisation maître-esclave. La base de données maître est responsable des opérations d'écriture actives, tandis que la base de données esclave est uniquement responsable des opérations de lecture actives (la base de données esclave effectuera toujours passivement les opérations d'écriture afin de maintenir la cohérence des données), de sorte que la perte de données puisse être évitée dans une large mesure. . Cela peut également réduire les connexions à la base de données et réduire la charge sur la base de données principale.

Installation de mysql

J'ai fait référence aux deux articles suivants pour installer mysql sur le serveur

Centos7.2 Installation de Mysql5.7 (Alibaba Cloud)

Centos7 ne peut pas se connecter à la base de données mysql à distance

Lors de l'installation de la base de données, il y a eu quelques pièges dus à l'impossibilité de se connecter à distance. Tout d'abord, après avoir configuré la base de données, une autorisation de la base de données est requise. pour autoriser l'accès, puis ouvrez les paramètres du pare-feu et définissez 3306. Le port est ouvert, permettant à l'outil de gestion de base de données d'accéder à la base de données via le port. J'ai juste continué à rencontrer des problèmes sans configurer le pare-feu.

MySQL a été installé sur les deux serveurs testés et la base de données de test a été importée en même temps

Configuration de réplication maître-esclave

Configuration du serveur principal

Modifier la configuration mysql du serveur principal, le fichier se trouve dans /etc/my.cnf

#在[mysqld]中添加:
server-id=1log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=master

#server-id 服务器唯一标识。
#log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。
#binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。
#binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。
#其中需要注意的是,binlog_do_db和binlog_ignore_db为互斥选项,一般只需要一个即可。

Créer des utilisateurs et des autorisations

accorder l'esclave de réplication sur . à masterbackup@'%' identifié par '123456';

% joker, indiquant que n'importe quelle adresse IP peut accéder au maître serveur. Pour un environnement formel, veuillez configurer l'esclave spécifié. Une fois l'adresse IP du serveur

créée, redémarrez le service mysql via la commande

service mysql restart<.>

Vérifiez l'état via la commande show master status

Implémenter la réplication maître-esclave MySQL

Configuration du serveur esclave

La même modification se trouve dans le répertoire /etc/my.cnf Configuration de

#在[mysqld]中添加:
server-id=2relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
#replicate-do-db=master


#server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。
#relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其他从服务器的主服务器。
#replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定binlog-do-db,则在slave端可用replication-do-db来过滤。
#replicate-ignore-db 不需要同步的数据库,如果有多个数据库,重复设置这个选项即可。
#其中需要注意的是,replicate-do-db和replicate-ignore-db为互斥选项,一般只需要一个即可。

Redémarrez le service mysql via la commande

service redémarrage mysql

Connectez-vous à la base de données principale
#连接master主服务器
mysql> change master to master_host=&#39;103.246.246.225&#39;,master_port=3306,master_user=&#39;masterbackup&#39;,master_password=&#39;123456&#39;,master_log_file=&#39;master-bin.000001&#39;,master_log_pos=120;#master_host对应主服务器的IP地址。
#master_port对应主服务器的端口。
#master_log_file对应show master status显示的File列:master-bin.000001。
#master_log_pos对应show master status显示的Position列:120。

Activez les données de synchronisation esclave
#启动slave数据同步
mysql> start slave;#停止slave数据同步(若有需要)
mysql> stop slave;

Afficher les informations sur l'esclave

Utilisez la commande show slave statusG ; afficher les informations sur l'esclave

Implémenter la réplication maître-esclave MySQL

Slave_IO_Running et Slave_SQL_Running sont tous deux oui, ce qui signifie que la synchronisation est réussie.

Test

Implémenter la réplication maître-esclave MySQL

Insérer une donnée dans n'importe quelle table de données

Implémenter la réplication maître-esclave MySQL

Affichez la table correspondante de la base de données esclave

Implémenter la réplication maître-esclave MySQL

Vous pouvez voir que les données correspondantes ont été synchronisées avec succès depuis la base de données ! !

Si vous souhaitez en savoir plus sur la programmation, faites attention à la rubrique

Formation php !

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer