Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Retour d'expérience sur l'utilisation de la solution de haute disponibilité des bases de données MHA

Olivier DASINI

November 29, 2012
Tweet

More Decks by Olivier DASINI

Other Decks in Programming

Transcript

  1. Viadeo Tech Days, Paris 22-11-2012 MHA : MySQL haute disponibilité

    @ Viadeo
  2. De quoi vais-je parler ? De moi (mais pas longtemps,

    promis) Viadeo en quelques chiffres Dis, c'était comment avant ? Mini zoom sur MySQL Replication Que choisir ? Le changement ? C'est... Zoom sur Master High Availability Quiz A retenir... (eh oui, ça fait déjà 1800 secondes)
  3. Me, myself & I Olivier DASINI Expert MySQL chez Viadeo

    @freshdaz http://dasini.net/blog/ Co-fondateur du MySQL User Group Francophone (LeMug.fr) • http://lemug.fr Co-auteur des livres Audit et optimisation – MySQL 5, Bonnes pratiques pour l’administrateur • Eyrolles, ISBN-13: 978-2212126341 MySQL 5 – Administration et optimisation • ENI, ISBN-13: 978-2-7460-5516-2 MySQL 5.6 – Administration et optimisation (février 2013)
  4. Viadeo en quelques chiffres L' OLTP chez Viadeo c'est :

    2 To de données Un certain nombre de « Grosses » tables • Jusqu'à 1 milliard d'enregistrements • Jusqu'à 350Go 23 serveurs en 5 shards qui se répartissent 20000 requêtes chaque seconde MySQL Replication sur chaque shard (1 master + N slaves) Plus des serveurs (slave) spécialisés (backup, besoin métier,...)
  5. Dis, c'était comment avant ?

  6. Direct routing & Co

  7. Dis, c'était comment avant ? Direct routing Load balancer :

    IPVS, least connection Lecture client : VIP de lecture Écriture client : IP directe sur le master Réplication MySQL Partage de la charge de lecture Sauvegarde non bloquante Continuité de service Redondance géographique Méthode pour changer de master A l'arrache !
  8. Dis, c'était comment avant ? Ce qui va plutôt bien

    L'architecture générale n'est pas vraiment problématique IPVS un peu « touchy » à configurer IPVS n'est pas la solution la plus souple Mais ce n'est clairement pas le problème Ce qui va moins bien La méthode de changement de master • Toute l'opération est manuelle • Demande de solides connaissance MySQL • Demande du sang froid (Dexter like) Les exceptions du workflow • Le problème des exceptions : « quand il y en a une ça va, c'est quand il y en a beaucoup qu'il y a des problèmes »
  9. MySQL Replication

  10. Mini zoom sur MySQL Replication Tout est bon dans la

    réplication (enfin presque)
  11. Mini zoom sur MySQL Replication La réplication MySQL, c'est cool

    ! Utilisée chez Viadeo pour : Scalabilité horizontale Sauvegarde Failover Existe depuis MySQL 3.23.15 Asynchrone Un seul master
  12. Que choisir ?

  13. Que choisir ? options envisagées Dual master 1 machine en

    « spare » Risque d'incohérences entre le master & les slaves en cas de crash Risque d'incohérences entre les slaves en cas de crash Semi-Synchronous Replication MySQL 5.5+ Peut réduire les performances Risque d'incohérences entre le master & les slaves en cas de crash Risque d'incohérences entre les slaves en cas de crash Pacemaker + DRBD Durée du « crash recovery » Machines en « spare » MySQL Cluster Moteur de stockage NDB Global transaction ID MySQL 5.6+
  14. Que choisir ? solution HA idéale Cher petit Papa Noël,

    si je t'écris aujourd'hui... une solution HA : Simple d'utilisation • Car à mon age on ne comprend plus les choses compliquées Facile à installer • Car à cause de Facebook je n'ai plus beaucoup de temps pour travailler Gratuite • Car j'aimerai avoir une augmentation ce coup ci ! Sans surcoût • Car mon chef est de toute façon un gros radin Qui fonctionne avec notre version de MySQL • Fatigué de corriger les bêtises de mes devs Qui ne m'oblige pas à changer d'architecture • Fatigué de corriger les bêtises de admins sys Performante • Je suis motard, j'aime quand ça va vite :) P.S. Cette année j'ai été sage... (lol)
  15. Le changement ? C'est...

  16. Gateway

  17. Le changement ? C'est... Gateway Gateway Load balancer : HAProxy

    1.4, least connection Lecture client : VIP de lecture Écriture client : VIP d'écriture Réplication MySQL Partage de la charge de lecture Sauvegarde non bloquante Continuité de service Redondance géographique Méthode pour changer de master MHA
  18. Le changement ? C'est... HAProxy 2 groupes de tests effectués

    par HAProxy Test1 Service MySQL UP Serveur MySQL administrativement IN / OUT Serveur MySQL appartenant à la VIP d'écriture (Master) Test2 Service MySQL UP Serveur MySQL administrativement IN / OUT Serveur MySQL appartenant à la VIP de lecture (Slave)
  19. MHA

  20. Zoom sur MHA Master High Availability Auteur: Yoshinori Matsunobu http://yoshinorimatsunobu.blogspot.fr/

    Téléchargement de MHA http://code.google.com/p/mysql-master-ha/ .deb, rpm, tar.gz Buts de MHA Promouvoir un slave en master • Automatique : avec supervision du master (ping toutes les 3 secondes) • Manuel : c'est l'humain qui décide Reconfiguration automatique de la réplication • Les slaves pointent sur le nouveau master Minimiser la perte de données • Réduire les risques d'incohérences avec le master original • Rendre les slaves cohérents avec le nouveau master
  21. Zoom sur MHA, principales caractéristiques Simple à mettre en œuvre

    Scripts PERL MySQL 5.0+ Indépendant du moteur de stockage Ne nécessite pas de changement d'architecture Pas de coûts supplémentaires (ou presque) Le manager à une faible empreinte Installé sur une machine virtuelle à Viadeo Performant Jusqu'à présent, la bascule n'a jamais dépassée 2 secondes Compatible avec la réplication asynchrone
  22. Zoom sur MHA, caractéristiques techniques Très bien détaillées dans la

    doc ! http://code.google.com/p/mysql-master-ha/wiki/TableOfContents Sur le Manager node (MHA manager) : masterha_master_switch : basculement manuel masterha_manager : supervision du master & basculement auto en cas de crash Sur les slaves (MHA node) : save_binary_logs apply_diff_relay_logs purge_relay_logs • relay_log_purge = 0 dans my.cnf (nécessaire pour restaures les autres slaves) MHA effectue différentes vérifications en amont : Vérification de la connexion SSH Vérification de la réplication ... Scripts optionnels master_ip_online_change_script : script externe lancé lors de la bascule manuelle ...
  23. Zoom sur MHA, utilisation chez Viadeo masterha_master_switch : basculement manuel

    Failover & bascule online • masterha_master_switch ­­conf=/etc/mha/app1.conf ­­master_state=alive • Tout les serveurs doivent être UP • Pas de retards de réplications • MHA n’éteint pas le master original lors du basculement • Pas de logs binaire à restaurer (MASTER_POS_WAIT()) En cas de crash du master • masterha_master_switch ­­conf=/etc/mha/app1.conf ­­master_state=dead ­­dead_master_host=<FQDN>
  24. Zoom sur MHA, scripting master_ip_online_change_script : script externe lancé lors

    de la bascule manuelle MHA propose une coque pré-remplie. Il faut finir le travail ! (Merci Xavier) $ less master_ip_online_change_script Objectif cohérence des données sub main { if ( $command eq "stop" ) { ## Gracefully killing connections on the current master # 1. Set read_only= 1 on the new master # 2. DROP USER so that no app user can establish new connections # 3. Set read_only= 1 on the current master # 4. Kill current queries # * Any database access failure will result in script die. + FLUSH TABLES WITH READ LOCK Mais ...
  25. Zoom sur MHA, scripting master_ip_online_change_script : script externe lancé lors

    de la bascule manuelle Ajouts Viadeo Kill des connexions IDLE Sortie « administrative » (OUT) du master de la VIP d'écriture • sub set_administrarively_out { my $server_host = shift; my $ssh_cmd = sprintf( "echo 'OUT' > %s", $my_admin_file ); … © Copyright Xavier K ­ Toute reproduction interdite sinon il vous marave
  26. Zoom sur MHA, cohérence des données Le point le plus

    important (pour moi) MHA fait le nécessaire pour récupérer un maximum de données Cohérence du nouveau master avec le master original • Récupération des logs binaires du master si possible Cohérence des slaves avec le nouveau master • Rattrapage de l'éventuel retard des slaves
  27. Quiz

  28. Quiz J'ai un « too many connections » sur le

    master ! a) J'augmente le nombre max de connexions b) Je switch le master avec MHA c) Je prend un p'tit rhum vieux et j’attends que ça passe
  29. Quiz Load de 180 !!! sur le master a) Je

    me tape un CRS (Citron vert, Rhum blanc, Sucre) et j'attends b) Je switch le master avec MHA c) Je redeviens développeur ;)
  30. Quiz Grosse modification de structure d'un table (5h) a) Je

    mets à jour les slaves puis en promeus un en master avec MHA b) Je l'exécute sur le master, en buvant un planteur de la Martinique c) J'utilise pt-online-schema-change
  31. Quiz Changement de conf à froid et/ou hardware a) Je

    me sers un p'tit rhum agricole de la Guadeloupe b) J’attends que le besoin disparaisse c) Je mets à jour les slaves puis en promeus un en master avec MHA
  32. A retenir

  33. A retenir MHA Minimise la perte de données avec le

    master Assures la cohérences des slaves entre eux Reconfigure automatiquement la réplication Minimise l’arrêt (ou la dégradation) de service Simple • A utiliser • A comprendre • A installer Pas de changement • d'architectures • de moteurs de stockage (Idéal avec InnoDB) • de logiques métier Performant • Quelques secondes de downtime (moins de 2) Fonctionne à partir des version supérieures à MySQL 5.0.45 Open source
  34. ...

  35. Merci A la team Viadeo Anna Aurélien Bouziane Marina Nicolas

    Sabri et son équipe Xavier Yorick ... Et toutes les « petites mains » Aux conférienciers Loïc Dias Da Silva Olivier Hory & Frédéric Perrin Amélie Boucher & Julien Hilion Pierre Killy Xavier Krantz Emanuele Pecorari François Le Lay Nicolas Tricot Damien Hardy Olivier Dasini A toi public Keynote Arnaud Devigne Jean-Marc Potdevin Stefan Fountain
  36. Questions Ou trouver les slides des Viadeo Tech Days ?

    Dans vos clés USB http://techdays.viadeo.com/ http://dasini.net/blog/
  37. :)

  38. Surprises A gagner : Audit et optimisation – MySQL 5,

    Bonnes pratiques pour l’administrateur • Eyrolles, ISBN-13: 978-2212126341 MySQL 5 – Administration et optimisation • ENI, ISBN-13: 978-2-7460-5516-2