Your SlideShare is downloading. ×
0
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

3,383

Published on

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

retour d'expérience sur l'utilisation de la solution de haute disponibilité des bases de données MHA
http://fr.viadeo.com/fr/profile/olivier.dasini

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,383
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MHA : MySQL haute disponibilité @ Viadeo Viadeo Tech Days, Paris 22-11-2012
  • 2. De quoi vais-je parler ?De moi (mais pas longtemps, promis)Viadeo en quelques chiffresDis, cétait comment avant ?Mini zoom sur MySQL ReplicationQue choisir ?Le changement ? Cest...Zoom sur Master High AvailabilityQuizA retenir... (eh oui, ça fait déjà 1800 secondes)
  • 3. Me, myself & IOlivier DASINI Expert MySQL chez Viadeo @freshdaz http://dasini.net/blog/ Co-fondateur du MySQL User Group Francophone (LeMug.fr) ● http://lemug.frCo-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 chiffresL OLTP chez Viadeo cest : 2 To de données Un certain nombre de « Grosses » tables ● Jusquà 1 milliard denregistrements ● 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 masterRéplication MySQL Partage de la charge de lecture Sauvegarde non bloquante Continuité de service Redondance géographiqueMéthode pour changer de master A larrache !
  • 8. Dis, cétait comment avant ?Ce qui va plutôt bien Larchitecture générale nest pas vraiment problématique IPVS un peu « touchy » à configurer IPVS nest pas la solution la plus souple Mais ce nest clairement pas le problèmeCe qui va moins bien La méthode de changement de master ● Toute lopé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, cest quand il y en a beaucoup quil y a des problèmes »
  • 9. MySQL Replication
  • 10. Mini zoom sur MySQL ReplicationTout est bon dans la réplication (enfin presque)
  • 11. Mini zoom sur MySQL ReplicationLa réplication MySQL, cest cool ! Utilisée chez Viadeo pour : Existe depuis MySQL 3.23.15 Scalabilité horizontale Asynchrone Sauvegarde Un seul master Failover
  • 12. Que choisir ?
  • 13. Que choisir ? options envisagéesDual master 1 machine en « spare » Risque dincohérences entre le master & les slaves en cas de crash Risque dincohérences entre les slaves en cas de crashSemi-Synchronous Replication MySQL 5.5+ Peut réduire les performances Risque dincohérences entre le master & les slaves en cas de crash Risque dincohérences entre les slaves en cas de crashPacemaker + DRBD Durée du « crash recovery » Machines en « spare »MySQL Cluster Moteur de stockage NDBGlobal transaction ID MySQL 5.6+
  • 14. Que choisir ? solution HA idéaleCher petit Papa Noël, si je técris aujourdhui... une solution HA : Simple dutilisation ● Car à mon age on ne comprend plus les choses compliquées Facile à installer ● Car à cause de Facebook je nai plus beaucoup de temps pour travailler Gratuite ● Car jaimerai 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 moblige pas à changer darchitecture ● Fatigué de corriger les bêtises de admins sys Performante ● Je suis motard, jaime quand ça va vite :)P.S. Cette année jai été sage... (lol)
  • 15. Le changement ? Cest...
  • 16. Gateway
  • 17. Le changement ? Cest... GatewayGateway Load balancer : HAProxy 1.4, least connection Lecture client : VIP de lecture Écriture client : VIP décritureRéplication MySQL Partage de la charge de lecture Sauvegarde non bloquante Continuité de service Redondance géographiqueMéthode pour changer de master MHA
  • 18. Le changement ? Cest... HAProxy2 groupes de tests effectués par HAProxyTest1 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 MHAMaster 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.gzButs de MHA Promouvoir un slave en master ● Automatique : avec supervision du master (ping toutes les 3 secondes) ● Manuel : cest lhumain 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 dincohérences avec le master original ● Rendre les slaves cohérents avec le nouveau master
  • 21. Zoom sur MHA, principales caractéristiquesSimple à mettre en œuvreScripts PERLMySQL 5.0+Indépendant du moteur de stockageNe nécessite pas de changement darchitecturePas de coûts supplémentaires (ou presque) Le manager à une faible empreinte Installé sur une machine virtuelle à ViadeoPerformant Jusquà présent, la bascule na jamais dépassée 2 secondesCompatible avec la réplication asynchrone
  • 22. Zoom sur MHA, caractéristiques techniquesTrès bien détaillées dans la doc ! http://code.google.com/p/mysql-master-ha/wiki/TableOfContentsSur le Manager node (MHA manager) : masterha_master_switch : basculement manuel masterha_manager : supervision du master & basculement auto en cas de crashSur 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 Viadeomasterha_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éesLe 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. QuizJai un « too many connections » sur le master !a) Jaugmente le nombre max de connexionsb) Je switch le master avec MHAc) Je prend un ptit rhum vieux et j’attends que ça passe
  • 29. QuizLoad de 180 !!! sur le mastera) Je me tape un CRS (Citron vert, Rhum blanc, Sucre) et jattendsb) Je switch le master avec MHAc) Je redeviens développeur ;)
  • 30. QuizGrosse modification de structure dun table (5h)a) Je mets à jour les slaves puis en promeus un en master avec MHAb) Je lexécute sur le master, en buvant un planteur de la Martiniquec) Jutilise pt-online-schema-change
  • 31. QuizChangement de conf à froid et/ou hardwarea) Je me sers un ptit rhum agricole de la Guadeloupeb) J’attends que le besoin disparaissec) Je mets à jour les slaves puis en promeus un en master avec MHA
  • 32. A retenir
  • 33. A retenirMHA 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 ● darchitectures ● 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. MerciA la team Viadeo A toi public Aux conférienciers Anna Loïc Dias Da Silva Aurélien Olivier Hory & Frédéric Perrin Bouziane Amélie Boucher & Julien Hilion Marina Pierre Killy Nicolas Xavier Krantz Sabri et son équipe Emanuele Pecorari Xavier François Le Lay Yorick Nicolas Tricot ... Damien Hardy Et toutes les « petites mains » Olivier Dasini 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. SurprisesA 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

×