web-dev-qa-db-fra.com

Meilleur moyen de configurer le maître de la réplication multi-maîtres

Question originale : J'ai plusieurs serveurs qui ont tous besoin d'agir en tant que maîtrise, comme si l'on échoue au prochain serveur, le serveur commence et prend la relève. Je me demandais simplement quelle est la meilleure façon de reproduire, c'est. Tous les serveurs sont dans différents centres de données.

Des questions

  • Serait-il correct de configurer chaque serveur en tant que maître maître avec le "Supermaster"?
  • Quel genre de conflits aurais-je?
  • Y a-t-il de meilleurs moyens de faire cela?

Question mise à jour : Nous avons des serveurs dans le monde entier dans différents centres de données et que chaque serveur a besoin d'un accès à une DB généralement, cela se trouve sur localhost.

Chaque serveur doit pouvoir mettre à jour la base de données et chaque serveur est à peu près un miroir de chaque serveur. Tout cela reste en synchronisation via un serveur (Supermaster) qui peut tous communiquer avec.

Tous les serveurs communiquent uniquement avec SuperMaster, ils ne sont au courant d'aucun autre serveur. Le Super Master It Soi est un miroir des autres serveurs, juste avec le service supplémentaire de les synchroniser tous.

Parfois, le Supermaster est hors ligne pour diverses raisons; Lorsque cela se produit, les autres serveurs continuent comme normaux, ce qui inclut la lecture et l'écriture de données. Lorsque le SuperMaster revient, il commence le processus de synchronisation et trie et résout les conflits entre les autres serveurs, lorsque cela est terminé, tous les serveurs ont un miroir des données et sont tous "synchronisés".

Donc, après avoir réfléchi un peu plus sur la question, mes questions sont;

  • Existe-t-il un moyen d'avoir une seule DB sur chaque serveur qui est identique à l'autre de la planche, sans avoir un seul point où je peux mettre à jour la DB comme dans une topologie d'une étoile?
  • Existe-t-il une meilleure option pour reproduire MySQL à travers le tableau pour ma situation?

Toute aide est très appréciée.

7
Elgoog

Il y a quatre (4) options que vous devez combiner

Option 1: MySQL en topologie étoile

Afin de ne pas réinventer la roue, veuillez lire mes derniers messages sur ce sujet.

Option 2: Utilisez DRBD

Option 3: Utilisez une réplication semi-chiffonneuse

Toute latence de réseau peut affecter la collecte de bûches binaires et son expédition d'entrées sur un réseau pourrait être un goulot d'étranglement. Utilisation - (( La réplication semi-anchrone de MySQL 5.5 peut vous permettre d'accorder les caractéristiques de battement de coeur MySQL afin de minimiser la réplication de perdre sa place en raison de à toute latence de réseau importante.

Option 4: Réplication circulaire

Si vous avez plusieurs maîtres, la réplication circulaire est un must. Il existe de nombreux produits pour fournir une réplication circulaire, telle que MySQL-MMM (mentionné dans le commentaire), ce qui est génial dans les limites d'un seul centre de données. Ce n'est qu'un morceau de votre puzzle dans ce quad (4) choses doit être logée en dehors de la simple réplication circulaire:

  1. La latence du réseau
  2. Distance géograforme
  3. Redondance au niveau du disque par datacenter (traité par DRBD)
  4. Bassin automatique de dbvip Backbone de DRBD (via UCARP)

[~ # ~] CAVEZER [~ # ~]

Cela peut ne pas être votre réponse complète, mais ces options peuvent fournir des idées que vous pouvez essayer dans différents scénarios. Par exemple, quand dans la topologie en étoile, vous pouvez procéder comme suit:

Scénario # 1

  • Demandez au serveur DB sur un centre de données SUPERMASTER HOLDING DONNÉES INNODB
  • Avoir le maître de distribution dans le même centre de données (journaux binaires uniquement)
  • Avoir tous les esclaves reproduisent du maître de distribution

Scénario # 2

  • Demandez au serveur DB sur un centre de données Be SuperMaster détenir aucune donnée, ce qui signifie que le SuperMaster est le maître de distribution (journaux binaires uniquement)
  • Avoir tous les esclaves reproduisent du maître de distribution

Scénario # 3

  • Configurer un maître de distribution dans chaque centre de données de la réplication circulaire
  • Dans chaque centre de données, avoir une instance MySQL (Supermaster local) avec InnoDB comme seul moteur de stockage
  • De chaque Supermaster local, accrochez deux ou plusieurs esclaves de lecture. Chaque esclave lu devrait utiliser Myisam comme moteur de stockage principal. Chaque table myisam devrait avoir Row_format = fixe pour augmenter la vitesse de lecture 20-30%

En ce qui concerne les possibilités, c'est à la hauteur de votre imagination et de votre budget de département.

Liens pour MySQL et DRBD

DRBD pour la redondance de niveau de disque et UCARP pour le basculement automatique DBVIP

8
RolandoMySQLDBA