Maison > Article > base de données > Construire un serveur maître-esclave MySQL sous Linux
Pour atteindre l'objectif
Vous devez maintenant créer deux serveurs MySQL (un maître et un esclave), un comme serveur maître et un en tant que serveur esclave, le serveur maître effectue des opérations d'écriture et le serveur esclave effectue des opérations de lecture.
Workflow
Serveur maître :
Activer les journaux binaires
Configurer l'ID de serveur unique
Obtenir le nom et emplacement du fichier journal binaire maître
Créez un compte utilisateur pour la communication esclave et maître.
Serveur esclave :
Configurer un identifiant de serveur unique
Utiliser le compte utilisateur attribué par le maître pour lire le journal binaire du maître
Activer l'esclave service.
(Recommandation de tutoriel vidéo d'apprentissage gratuit : Tutoriel vidéo mysql)
Travail de préparation
Base de données maître-esclave version Il est préférable de conserver les mêmes
Les données des bases de données maître et esclave doivent être cohérentes
Base de données maître : 192.168.244.201 : 3306
Base de données esclave : 192.168. 244.202 : 3306
Démarrer la configuration
Configurer le serveur principal Maître
Trouver le fichier de configuration my.cnf du maître base de données (my.ini sous Windows), la mienne Dans /etc/my.cnf
Insérez les deux lignes suivantes dans la section [mysqld] :
[mysqld] log-bin=mysql-bin #开启二进制日志 server-id=201 #设置server-id,唯一值,标识主机
Redémarrez le service mysql
systemctl restart mysqld
Créer pour le principal Entrez MySQL à partir du compte/mot de passe synchronisé
: mysql -u root -p et appuyez sur Entrée pour saisir le mot de passe.
Le nom d'utilisateur que j'ai créé est "master_root" et le mot de passe est "MySql@6688"
[Remarque : le mot de passe ayant été modifié pour prendre en charge le mot de passe simple 123456, un nouveau un est créé ici. L'utilisateur a eu quelques problèmes, disant que le mot de passe n'était pas conforme à la politique, etc. Plus tard, j'ai simplement réinstallé MySQL et utilisé le mot de passe complexe par défaut, et il n'y a plus eu de problèmes. C'est vraiment bien de s'y habituer. 】
J'utilise % ci-dessous Je n'écris pas l'adresse IP spécifique. Vous pouvez décider par vous-même.
#创建用户(IP为可访问该master的IP,任意IP就写'%') mysql> CREATE USER 'master_root'@'192.168.244.202' IDENTIFIED BY 'MySql@6688'; #分配权限(IP为可访问该 master的IP,任意IP就写'%') mysql> GRANT REPLICATION SLAVE ON *.* TO 'master_root'@'192.168.244.202'; #刷新权限 mysql>flush privileges;
Vérifiez l'état du maître et enregistrez le nom du fichier binaire (mysql-bin.000001) et l'emplacement (154). Il sera utilisé plus tard lors de la configuration de la bibliothèque esclave.
show master status;
Configurer le serveur maître Slave
Modifier le fichier my.cnf
vim /etc/my.cnf
[mysqld] server-id=202 #设置server-id,唯一值,唯一标识从库
Redémarrez le service mysql
systemctl restart mysqld
Connectez-vous à mysql et exécutez l'instruction SQL de synchronisation (nom du serveur maître, nom d'utilisateur pour le maître et l'esclave, mot de passe, nom du fichier binaire, emplacement)
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.244.201', -> MASTER_USER='master_root', -> MASTER_PASSWORD='MySql@6688', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154;
Démarrez le processus de synchronisation de l'esclave
mysql>start slave;
Vérifiez l'état de l'esclave
show slave status\G
Faites attention à ne pas suivre le point-virgule ; sinon la dernière ligne L'erreur signalée est la suivante :
ERROR: No query specified
Lorsque Slave_IO_Running et Slave_SQL_Running sont OUI, cela signifie que le paramètre de synchronisation maître-esclave est réussi.
Ensuite, vous pouvez effectuer une vérification. Par exemple, insérer une donnée dans une table de la base de données de test de la base de données maître et vérifier s'il y a de nouvelles données dans la même table de données dans le test de l'esclave. base de données à vérifier. Pour vérifier si la fonction de réplication maître-esclave est valide, vous pouvez également fermer l'esclave (mysql>stop slave;), puis modifier le maître pour voir si l'esclave est modifié en conséquence (après avoir arrêté l'esclave, le les modifications du maître ne seront pas synchronisées avec l'esclave), puis l'opération maître-esclave peut être terminée. La fonctionnalité de copie est vérifiée.
Autres paramètres associés :
Par défaut, une fois que le maître a activé le journal binaire, il enregistre les opérations de toutes les tables dans toutes les bibliothèques. Vous pouvez spécifier uniquement. enregistrez la base de données spécifiée ou même la table spécifiée via la configuration. Pour des opérations spécifiques, vous pouvez ajouter et modifier les options suivantes dans [mysqld] du fichier de configuration mysql :
Quelles bases de données ne sont pas synchronisées ?
binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema
Quelles bases de données sont uniquement synchronisées, sauf En outre, d'autres désynchronisées
binlog-do-db = game
Par exemple, lorsque vous avez vérifié l'état du maître auparavant, vous peut voir que seule la bibliothèque de test est enregistrée et que les bibliothèques manuelles et mysql sont ignorées.
Articles et tutoriels connexes recommandés : Tutoriel 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!