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 ?

(*-*)浩
Libérer: 2020-09-15 17:38:20
original
3536 Les gens l'ont consulté

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)
Copier après la connexion

Vérifiez ensuite sur l'Esclave

mysql> show slave status\G 
Slave_IO_Running: Yes 
Slave_SQL_Running: No
Copier après la connexion

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,现在主从同步状态正常了。。。
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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/
Copier après la connexion

5. Arrêtez l'état de l'esclave

mysql> stop slave;
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

8. Redémarrez la synchronisation esclave

mysql> stop slave;
Copier après la connexion
Copier après la connexion

9. Vérifiez l'état de la synchronisation

mysql> show slave status\G 查看; 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes
Copier après la connexion
.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal