Maison >base de données >tutoriel mysql >Que dois-je faire si deux maîtres et esclaves MySQL sont synchronisés ?
MySQL a deux maîtres et esclaves, ce qui signifie serveur maître et serveur esclave. La structure a un maître et un esclave : un maître et un esclave. Un maître et plusieurs esclaves : un maître et plusieurs esclaves.
Cours recommandés : Tutoriel MySQL
Solution de synchronisation maître-esclave
Premier allez dans la bibliothèque Master :
mysql>show processlist; 查看下进程是否Sleep太多。发现很正常。 show master status; 也正常。 mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+-------------------------------+ | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | +-------------------+----------+--------------+-------------------------------+ 1 row in set (0.00 sec)
Vérifiez ensuite sur l'Esclave
mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: No
On voit que l'Esclave est désynchronisé
Deux solutions sont présentées ci-dessous :
Méthode 1 : Ignorer l'erreur et continuer la synchronisation
Cette méthode convient aux situations où les données de la base de données maître-esclave ne sont pas très différentes , ou les données n'ont pas besoin d'être complètement unifiées et les exigences en matière de données ne sont pas une situation stricte
Solution :
stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; 之后再用mysql> show slave status\G 查看: Slave_IO_Running: Yes Slave_SQL_Running: Yes ok,现在主从同步状态正常了。。。
Méthode 2 : refaire maître-esclave, synchronisation complète
Cette méthode convient aux données de bases de données maître-esclave. La différence est grande, ou les données doivent être complètement unifiées
Les étapes de la solution sont les suivantes :
1. Entrez d'abord dans la base de données principale et verrouillez la table pour empêcher l'écriture des données
Utilisez la commande :
mysql> flush tables with read lock;
Remarque : cette zone est verrouillée en lecture seule, et les instructions ne sont pas sensibles à la casse
2. Sauvegardez les données
# Sauvegardez les données dans le fichier mysql.bak
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
Remarque ici : sauvegarde de la base de données. doit être fait régulièrement. Vous pouvez utiliser un script shell ou un script python, qui sont plus pratiques pour garantir que les données sont infaillibles
3 Vérifiez l'état du maître
mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+-------------------------------+ | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | +-------------------+----------+--------------+-------------------------------+ 1 row in set (0.00 sec)
4. fichier sur la machine esclave pour la récupération des données
#Utilisez la commande scp
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/
5. Arrêtez l'état de l'esclave
mysql> stop slave;
6. Ensuite, exécutez la commande mysql dans le bibliothèque esclave et importez la sauvegarde des données
mysql> source /tmp/mysql.bak.sql
7. Configurez la synchronisation à partir de la bibliothèque esclave, qui est les deux éléments | Position du fichier | bibliothèque principale
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8. Redémarrez la synchronisation esclave
mysql> stop slave;
9. Vérifiez l'état de la synchronisation
mysql> show slave status\G 查看; Slave_IO_Running: Yes Slave_SQL_Running: Yes.
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!