Maison > Article > base de données > 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
À 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.
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
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为互斥选项,一般只需要一个即可。
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
service mysql restart<.>
#在[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为互斥选项,一般只需要一个即可。
service redémarrage mysql
#连接master主服务器 mysql> change master to master_host='103.246.246.225',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',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。
#启动slave数据同步 mysql> start slave;#停止slave数据同步(若有需要) mysql> stop slave;
Si vous souhaitez en savoir plus sur la programmation, faites attention à la rubriqueFormation 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!