Maison >base de données >tutoriel mysql >Que dois-je faire si deux maîtres et esclaves MySQL sont synchronisés ?

Que dois-je faire si deux maîtres et esclaves MySQL sont synchronisés ?

(*-*)浩
(*-*)浩original
2019-05-10 11:10:563530parcourir

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

Que dois-je faire si deux maîtres et esclaves MySQL sont synchronisés ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn