Maison > Article > base de données > MySQL implémente la fonction de réplication maître-esclave
centos7.3, MySQL5.7
Référence d'installation MySQL article précédent https://www .jianshu.com/p/452aa99c7476 a une explication.
Les capacités de réplication intégrées de MySQL constituent la base de la création d'applications à grande échelle et hautes performances. Distribuez des centaines de millions de données MySQL sur plusieurs systèmes. Ce mécanisme de distribution est obtenu en copiant les données d'un certain hôte MySQL vers d'autres hôtes (esclave) et en l'exécutant à nouveau. Lors de la réplication, un serveur agit en tant que serveur et un ou plusieurs autres serveurs agissent en tant qu'esclaves. Le maître écrit des mises à jour dans le journal binaire et maintient un index des fichiers pour suivre la rotation des journaux. Ces journaux enregistrent les mises à jour envoyées aux serveurs esclaves. Lorsqu'un esclave se connecte au maître, il informe le maître de l'emplacement de la dernière mise à jour réussie que l'esclave a lu dans le journal, l'esclave reçoit toutes les mises à jour survenues depuis, puis bloque, etc. Le maître notifie les nouvelles mises à jour. Veuillez noter que lorsque vous répliquez, toutes les mises à jour des tables de réplication doivent être effectuées sur le serveur maître. Sinon, vous devez faire attention à éviter les conflits entre les mises à jour effectuées par les utilisateurs sur les tables du serveur maître et les mises à jour des tables sur le serveur
Si MySQL est installé conformément à l'article que j'ai écrit, alors le fichier de configuration my.cnf se trouve dans le répertoire /etc/. Si ce n'est pas le cas, vous pouvez le rechercher via la commande Whereis. Ajoutez la configuration suivante sous le fichier de configuration my.cnf
server_id=1 #指定MySQL的id log-bin=mysql-bin #开启二进制日志文件
Exécutez cette commande dans le serveur principal (tous sont autorisés ici) Pour l'accès à l'adresse, il est recommandé de la définir sur l'adresse du serveur esclave)
GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Abc123...';
server_id=2 log-bin=mysql-bin binlog_do_db=db_test#表示要同步的数据库
Description : binlog- ignore-db=test signifie base de données de test non synchronisée binlog_do_db=db_test #Représente la base de données à synchroniser
Redémarrez le serveur maître et le serveur esclave
service mysqld restart
show master status
Résultats Comme suit :
Certaines informations doivent être enregistrées ici, qui doivent être utilisées lors de la configuration du serveur esclave 6. Configurez. le serveur esclave (se connecter au serveur maître)
change master to master_host='192.168.74.129',master_user='replication',master_password='Abc123...',master_log_file='mysql-bin.000001',master_log_pos=2041;
master_host est l'adresse IP du serveur maître master_port=3306 (Il n'y a pas de configuration ici, la valeur par défaut est 3306) master_user : utilisateur autorisé du serveur maître, c'est-à-dire l'utilisateur créé avant Maître master_password : Utilisateur autorisé du serveur maître mot de passe correspondant master_log_file : Nom du fichier binlog maître master_log_pos : Valeur de position dans le fichier binlog maître concernant la valeur de position, voici une note : Si le serveur maître a déjà beaucoup de données, vous en avez d'abord besoin pour sauvegarder les données du serveur maître sur le serveur esclave, puis utilisez la commande show master status pour enregistrer l'emplacement où la synchronisation doit être démarrée. # 7. Démarrez la réplication et exécutez
start slave
sur le serveur esclave. La commande à arrêter est : stop slave; Les deux résultats encerclés sont oui, indiquant que la configuration de réplication maître-esclave est réussie. Si la configuration échoue, vous pouvez vérifier les informations d'échec dans le fichier journal MySQL, ou vous pouvez vérifier un bref message d'erreur via la commande ci-dessus :
Ceci est le maître- serveur esclave que je viens de configurer La raison principale de l'erreur est que l'UUID du serveur MySQL est en conflit. La raison est que mon serveur esclave est copié à partir du serveur maître. Allez simplement dans /var/lib/mysql/auto.cnf et modifiez-le. #Vérifiez l'état actuel des résultats maître-esclave :
Créez un nouveau tableau ci-dessous pour voir s'il peut être synchronisé :
#Affichez le serveur esclaveVous pouvez voir qu'il a été synchronisé.
Pour plus d'articles techniques liés à MySQL, veuillez visiter la colonne Tutoriel MySQL pour apprendre !
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!