Maison > Article > base de données > À partir des aspects suivants, nous traiterons du problème de la réplication maître-esclave MySQL incohérente.
Lors de la configuration d'une configuration maître-esclave Mysql, il arrive souvent que le maître et l'esclave soient synchronisés, ou qu'il y ait des erreurs ou des retards. Ci-dessous, nous pouvons résoudre les erreurs en fonction de ces aspects.
Les sites Web légèrement plus grands configureront essentiellement la réplication maître-esclave MySQL. D'une part, le maître-esclave MySQL est utilisé pour séparer la lecture et l'écriture de la base de données. D'un autre côté, la sauvegarde autonome de MySQL elle-même n'est pas très puissante. Elle adopte généralement une architecture maître-esclave et effectue une sauvegarde des données sur l'esclave.
Dans le processus de réplication maître-esclave MySQL, il existe plus ou moins des situations de synchronisation maître-esclave. Cet article résumera brièvement la situation de synchronisation maître-esclave des données. Veuillez noter que cet article en traite principalement à partir de la base de données. niveau. La base de données maître-esclave est incohérente.
1. Délai réseau
Étant donné que la réplication maître-esclave MySQL est une réplication asynchrone basée sur binlog, les fichiers binlog sont transmis via le réseau. Bien entendu, le délai réseau est la garantie absolue. de synchronisation maître-esclave. Pour la plupart des raisons, en particulier lorsque la synchronisation des données se produit entre les salles informatiques, la probabilité que cela se produise est très élevée, donc séparez la lecture et l'écriture et faites attention à la conception initiale de la couche métier.
2. Les charges des machines maître et esclave sont incohérentes
Parce que la réplication maître-esclave mysql démarre 1 thread io sur la base de données maître et démarre 1 sql à partir de au-dessus des threads et de 1 thread io, l'une des machines a une charge élevée et est trop occupée, ce qui entraîne des ressources insuffisantes pour l'un des threads, et une incohérence maître-esclave se produira.
3. Les paramètres Max_allowed_packet sont incohérents
Le max_allowed_packet défini sur la base de données principale est plus grand que celui de la base de données esclave lorsqu'une instruction SQL volumineuse peut être effectuée sur la base de données esclave. base de données maître, base de données esclave Les paramètres de la base de données sont trop petits et ne peuvent pas être exécutés, ce qui entraîne une incohérence maître-esclave.
4. Incohérence maître-esclave causée par une incohérence entre la valeur de la clé à partir de la clé d'incrémentation automatique de la clé et le paramètre de pas d'incrémentation automatique.
5. Lorsque mysql est anormalement en panne, si sync_binlog=1 ou innodb_flush_log_at_trx_commit=1 n'est pas défini, il est très probable que le fichier binlog ou relaylog soit endommagé, entraînant une incohérence maître-esclave.
6. Synchronisation maître-esclave causée par des bugs dans MySQL lui-même.
7. Les versions sont incohérentes, surtout lorsque la version supérieure est le maître et la version inférieure est l'esclave, la fonction prise en charge par la base de données maître n'est pas prise en charge par la base de données esclave.
Ci-dessus sont quelques situations courantes de synchronisation maître-esclave. Il peut y avoir d'autres situations de désynchronisation. Veuillez nous parler de la situation d'incohérence maître-esclave que vous avez rencontrée.
Sur la base de la situation ci-dessus, assurez-vous d'abord que les paramètres max_allowed_packet, le point de départ de la clé d'incrémentation automatique et le point de croissance sont cohérents, puis sacrifiez une partie des performances pour activer sync_binlog sur le serveur principal pour les bibliothèques utilisant innodb, il est recommandé de configurer le contenu suivant
1. innodb_flush_logs_at_trx_commit = 1
2. innodb-support_xa = 1 # Mysql 5.0 ou supérieur
3. >
2. read_only
Ce qui précède est la solution au problème dans l'environnement maître-esclave construit par Mysql. à tout le monde.
Articles associés :
Exemple de séparation lecture-écriture Mycat basée sur la réplication maître-esclave MySQL Introduction détaillée sur la façon d'utiliser Docker pour créer rapidement un environnement de réplication maître-esclave 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!