web-dev-qa-db-fra.com

Réplication Master-Master avec 3 nœuds

J'ai besoin de configurer MySQL Master/Master Replication avec 3 nœuds. Actuellement, j'ai Master/Slave Configuration et j'ai besoin de le déplacer vers Master/Master avec 3 nœuds. J'ai parcouru des messages sur la configuration de la structure de la bague, je suis peu nerveuse à ce sujet.

Si quelqu'un a la configuration similaire sur la production, serait formidable si vous pouvez me suggérer comment y parvenir.

4
Swaroop Kundeti

Il y a plusieurs raisons pour lesquelles vous ne voudrez pas faire de la réplication multimaster de manière circulaire, mais la plupart d'entre eux peuvent être résumés en un: , vous aurez 3 points de défaillance différents différents . Chèque Cet article (ce que vous avez demandé exactement, mais probablement pas ce que vous voulez). La réplication standard est très sujette à des dérives dans des données, car elle est asynchrone, produisant -If vous avez de la chance, la réplication à arrêter pour tous les nœuds ou -Si vous êtes malchanceux - la réplication à la suite de différentes données entre les nœuds.

Alors que 5,6 GTID et d'autres caractéristiques minimisaient ces problèmes de cohérence, vous avez toujours les 3 points de défaillance simples, car la réplication est une réplication multi-sources unique ( est disponible uniquement dans Mariadb et MySQL 5.7 , nier le besoin de réplication circulaire).

Si vous souhaitez une configuration multimaster (écrivez n'importe où), je vous recommande vivement d'aller pour une technologie différente qui gère les conflits entre les nœuds. Galera (Vous pouvez également le trouver sous les noms de Cluster de PerCona Xtradb ou Cluster Mariahb ) est probablement la voie à suivre . Il fonctionne sur des entre-neufs, "résout" les conflits (les retournements et la réaction et la transaction) est multithreadé et peut être utilisé pour remplacer la réplication régulière et/ou pour la clustering. Très recommandé si votre objectif est HA ou lisez la mise à l'échelle. C'est gratuit et open source, très répandu (j'ai aidé plusieurs banques et entreprises à l'utiliser), compatibles avec la réplication standard et utilise standard InnoDB -NOT-NOTT UN MONTAGE DIFFÉRENT STOCKAGE.

Bien entendu, les plus importants sont qu'il s'agit d'une technologie différente qui peut prendre un certain temps à comprendre (bien que probablement plus facile que d'autres technologies de clustering), et elle a ses petites bizarreries. Mais, de ma propre opinion, il vaut la peine d'apprendre à ce sujet pour que les choses "fonctionnent correctement".

Pouvez-vous configurer une réplication circulaire? Bien sûr, dans l'article que j'ai mentionné ci-dessus, vous avez les recommandations typiques de log-slave-updates, auto_increment_increment et auto_increment_offset Pour chaque nœud. Cependant, les rares personnes qui peuvent être exécutées, il faut toujours éviter les écrivies multi-maîtres ou l'exécuter dans un environnement très contrôlé, où vous ne pouvez pas exécuter des mises à jour et supprime les mêmes tables de la concurrence. Certaines personnes ont également des solutions de sur-ingénieur impliquant une réplication GTIS et semi-synchronisée, etc., mais généralement toutes les entreprises n'ont pas le dévouement et les connaissances nécessaires pour mettre des correctifs sur un protocole qui n'est pas préparé de manière nativement préparée pour cela.

6
jynus

Je suis d'accord avec la réponse précédente de Jynus. Mariadb est assez simple d'installer et il y a beaucoup Comment faire des sujets Pour faire des remplaçages sur MySQL (vous n'avez pas besoin de vous inquiéter, tous les utilitaires et les commandes que vous savez sont les mêmes) par exemple, du site de Mariadb lui-même pgrade Mariadb . Vous pouvez également simuler une configuration MARIADB/PERCONA/MYSQL avec vos paramètres matériels à partir de plusieurs nines site (recherche du configurateur)

Je vous conseille de faire une lecture préalable dans le site de Galeracluster pour que vous puissiez évaluer si les fonctionnalités présentées sont vraiment ce que vous recherchez. Personnellement, je pense que Galera comme un excellent "Enabler" pour HA sur MySQL (et "dérivés") sans changer de manière significative la façon dont vous gérez des bases de données.

Remarque : Si vous allez avec Galera (et pas de cluster de type NDB), envisagez d'utiliser Percona Xtrabackup au lieu de la proposition de RSYNC ou de MySqldump pour SST (transfert d'instantané d'état )

mariadbréplicationmysql

2
bigux

J'ai traité de réplication circulaire avec trois nœuds avant. Voici mes messages:

Je me souviens d'un client que j'avais l'habitude d'avoir qui avait 800 bases de données client (environ 2 ToB) dans une réplication circulaire à trois nœuds. Le client a fait l'écrit pour 267 bases de données sur un serveur DB, 267 bases de données sur le deuxième serveur DB et les 266 derniers de la troisième base de données. Il y avait des écrit lourds. Il y avait de longs intervalles de décalage de réplication entre le nœud. Lorsque le temps de pointe était passé, tous les nœuds étaient de retour à la normale avec Seconds_Behind_Master à 0. Ils n'avaient pas besoin de auto_incrènement_incrètent et auto_incrènement_offset, car toutes les écrivies dans une base de données spécifique ont été limitées à un serveur DB spécifique.

Dans votre cas, si vous avez une base de données de taille petite à modérée qui n'est pas intensive en écriture, la réplication circulaire est correcte. Je limiterais tout simplement que toutes les données DB écrit à une boîte et chargez votre sélection.

CAVEAT

N'oubliez pas que les deux @ jynus et @ AaronBrown ont raison de dire que vous avez plusieurs points d'échec. Vous devez également exercer de grands soins à prendre des sauvegardes, limiter les écrivies de bases de données spécifiques à un serveur DB fixe, en veillant à ce que votre application soit consciente du cluster. Vous devez également concevoir des méthodes strictes pour effectuer des pièces de basculement, prendre des nœuds hors de la bague, insérer des nœuds dans la bague et restaurer une seule base de données sans augmenter la charge du serveur.

2
RolandoMySQLDBA