web-dev-qa-db-fra.com

Mysql h.a avec basculement automatique

MySQL a beaucoup de solutions différentes très disponibles, j'aimerais savoir quelles sont les différences entre toutes les implémentations actuelles, voici les implémentations qui semblent actuellement à jour:

  • Réplication du groupe MySQL (par oracle)
  • Cluster MySQL NDB (par Oracle)
  • Galera Cluster (par Galera)
  • Cluster Xtradb (par Percona)
  • Cluster de tissu MySQL (par oracle)
  • MySQL Orchestrator (par GitHub)

Quelles seraient les options recommandées (ou les autres) pour une configuration disponible élevée avec un basculement automatique? (Pour quelque chose d'équivalent de la mise en miroir SQL Server dB avec une réplication synchrone)

3
Kedare

Galera == pxc == mariadb w/galera - ils sont proches de la même chose. Pour HA, vous avez besoin de 1 (ou plus) nœud dans chacun des 3 centres de données. (Pensez les tremblements de terre, les tornades, les inondations, même les pannes de datacenter - qui DO se produisent.)

La réplication du groupe Oracle est assez nouvelle, mais a beaucoup de promesses.

Le "tissu" d'Oracle est probablement abandonné. (Probablement en raison d'une insuffisance unique à résoudre.)

L'orchestrateur est très bon à défaillance des arbres arbitraires (pensez aux serveurs de relais) de lots (même des centaines) d'esclaves. Je ne sais pas sur le basculement du maître. (Voir les conférences de Booking.com.)

Le MHA est plutôt bon - mais quand il découvre une situation "cerveau fendu", elle nécessite une intervention manuelle.

NDB Cluster a un certain nombre de choses différentes dans son "moteur". C'est-à-dire que ce n'est pas un remplacement "Drop-in" pour Innodb, que tout le reste du reste. Pour une chose, il emploie une "consistance éventuelle", dans laquelle vous devez spécifier la manière de résoudre les conflits.

Je pense que les solutions basées sur Galera, plus la réplication du groupe sont les seules à réparer automatiquement un serveur défaillant lorsqu'il est ramené. (Je pourrais me tromper ici.)

Mes préférences Aujourd'hui: PXC de Percona ou Mariadb avec Galera - chacun se développe et prend en charge Galera. Mais je garde mes yeux sur la réplication du groupe.

4
Rick James

Quelques mots plus à une autre réponse (des commentaires non bien formatés):

  • Orchestrator - Ce ne sont pas des technologies Ha, il est outil de visualiser la topologie et de résoudre le problème, mais toujours basé sur la sous-couche d'autres technologies
  • Galera vs NDB, principale (pour mon point de vue) différence il est prise en charge des moteurs NDB vs innodb
  • La réplication du groupe est nouvelle et je ne travaille pas avec elle

Tout comme remarque:

  • Gardez à l'esprit pour les deux (Galera et NDB) - avez une énorme quantité de "dans certains cas ...", "pourrait être ..." et etc. dans la documentation. Tout cela est possible de faire correctement, mais lorsque vous essayez de transférer une application héritée sur le cluster, effectuez des tests appropriés avant. Je rencontre plusieurs cas de temps sur des projets, lorsque la mauvaise application fonctionne toujours sur un nœud unique (maître-esclave) et meurez sur Galera par exemple. Le problème dans la mauvaise conception, mais le client déplace l'application en direct vers des technologies "modernes" après de simples tests.

spéciale pour la dernière raison, je suis très sceptique environ 1 noeud par datacenter, selon les besoins de l'entreprise, vous pouvez choisir quel meilleur - quelques secondes retardent l'esclave derrière le maître ou le ralentissement par chaque changement. Il n'a pas pu être affecté sur de très petites transactions et pourrait être tueur sur plus compliqué.

1
a_vlad

Une solution simple que vous voudrez peut-être envisager est une configuration active/passive PACEMAKER/COROSYNC avec DRBD. Le plus gros inconvénient est qu'un basculement implique une récupération d'accident, mais si vos ib_logfiles ne sont pas énormes et que vous pouvez rester un peu de temps en cas de défaillance (la récupération de l'accident de longue date peut-elle être quelques secondes, pourrait être Beaucoup de temps plus long en fonction de la quantité nécessaire à Rejouer les journaux de Redo), il peut simplifier votre vie.

Avec DRBD, la réplication de données se produit en dehors de MySQL et au niveau du bloc, de sorte que vous évitez de résoudre tout problème avec des touches en double et une cohérence des données sur plusieurs maîtres. Cela peut également être combiné avec des esclaves de réplication MySQL qui lisent à partir du serveur actif dans la paire.

Il n'y a plus de solution HA qui est la meilleure pour chaque cas, et il existe de nombreuses opinions contradictoires. Celui-ci n'est pas une solution "écrire n'importe où", donc si c'est ce que vous recherchez, vous pouvez probablement le gratter la liste.

1
user118129