Question MySQL Clustering


J'exécute un serveur mysql qui héberge environ 50 Go de données (principalement pour environ 250 sites Web), et je me demande quelles sont mes options pour configurer un cluster MySQL redondant? Le but principal serait que je puisse mettre un serveur hors service à des fins de maintenance ou de redémarrage, sans affecter la disponibilité de la base de données - et secondairement, il y aurait une sorte de basculement à chaud en cas de problème avec le serveur live.

Ma compréhension est que mysql-cluster exige que les bases de données soient entièrement contenues dans la mémoire, et avec autant de données, ce n’est pas une option pratique.


5
2018-05-05 11:27


origine




Réponses:


Ce dont vous avez besoin, c'est de la réplication. Bien que de nombreuses personnes utilisent la réplication MySQL, je me suis suffisamment occupée de la répliquer (des dizaines d'instances MySQL de production à haute capacité) pour savoir que ce n'est pas une option gagnante. C'est assez fragile, et échouera à des moments difficiles. Maintenant, je suis plutôt enclin à utiliser une solution de réplication par blocs telle que DRBD pour rendre les magasins MySQL cohérents.

En ce qui concerne le basculement, là encore, la réplication MySQL ne traite pas particulièrement bien ce problème. Bien que le basculement de maître à esclave soit une opération assez automatisable, gérer les conséquences (rétablir la réplication dans un sens opposé) est toujours un processus manuel, nécessitant de piquer et de pousser pour que tout fonctionne correctement. Quelle que soit la méthode de réplication choisie, j'utilise heartbeat pour déterminer si tout fonctionne correctement et lorsque le serveur actuellement actif bascule, en veillant à ce que les ressources soient reprises correctement.


3
2018-05-05 11:42





Check-out mmm pour le basculement automatisé. Assurez-vous de configurer les deux serveurs en tant que maîtres afin de disposer d'une réplication bidirectionnelle. De plus, si vous utilisez l'auto-incrémentation, assurez-vous de le configurer de manière à éviter les conflits pour les entrées (voir ce article pour plus de détails).

Enfin, utilisez Maatkit pour s'assurer qu'il n'y a pas d'incohérences entre les serveurs.


3
2017-07-02 20:26





Nous avons utilisé DRBD / Heartbeat pendant un certain temps maintenant, et c’est plutôt bon, mais pas idéal pour une situation de serveur virtuel (que nous avons), parce que devrait avoir plusieurs connexions entre les serveurs et, dans un environnement virtuel, toutes les connexions (série, Ethernet, etc.) sont essentiellement acheminées sur le même fil; de ce fait, toutes les heures sont écoulées. (Je me rends compte que je pourrais brancher un vrai câble série, mais je ne serais plus en mesure de migrer mes ordinateurs virtuels entre des hôtes - une capacité à laquelle je ne veux pas renoncer.)

Dans cette situation, je rencontre parfois un cas où aucun serveur ne peut voir l'autre, et ils deviennent tous deux "Primaires" en même temps (une situation appelée split-brain, qui est un mal de tête à récupérer)

Mais c’est définitivement une meilleure solution que réplication binlog que nous utilisions avant cela - et à partir des commentaires jusqu'à présent, cela ressemble à une solution plus robuste que mysql-cluster ainsi que.


2
2018-05-05 13:49





Depuis mysql 5.1, les données du cluster mysql (bien que pas ses index) peuvent être stockées sur le disque: Quoi de neuf dans MySQL 5.1

Cependant, je suis d’accord avec Womble pour dire qu’étant donné les nombreuses limitations de mysql-cluster / ndb et la fragilité de la réplication, j’hésiterais à envisager une solution plus générale. Pour une base de données unique avec un modèle d’utilisation bien compris et un véritable DBA fonctionnant avec les développeurs? peut-être. Mais pas pour un cluster de serveurs de base de données général qui prend en charge de nombreuses applications différentes.

Au lieu de cela, j'aimerais utiliser soit l'approche DRBD, soit simplement jeter de l'argent sur le problème et utiliser un SAN. Aucune solution à ma connaissance n'est parfaite.


0
2018-05-05 13:13



Dites-moi ce que vous entendez par "jeter de l’argent sur le problème et utiliser un SAN" - car cela fonctionne déjà sur un SAN - Brent