• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
 

MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

on

  • 2,933 views

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

Statistics

Views

Total Views
2,933
Views on SlideShare
1,746
Embed Views
1,187

Actions

Likes
0
Downloads
17
Comments
0

4 Embeds 1,187

http://dasini.net 1184
http://translate.googleusercontent.com 1
http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini Presentation Transcript

    • MHA : MySQL haute disponibilité @ Viadeo Viadeo Tech Days, Paris 22-11-2012
    • 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)
    • 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)
    • 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,...)
    • Dis, cétait comment avant ?
    • Direct routing & Co
    • 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 !
    • 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 »
    • MySQL Replication
    • Mini zoom sur MySQL ReplicationTout est bon dans la réplication (enfin presque)
    • 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
    • Que choisir ?
    • 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+
    • 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)
    • Le changement ? Cest...
    • Gateway
    • 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
    • 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)
    • MHA
    • 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
    • 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
    • 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 ...
    • 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>
    • 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 ...
    • 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
    • 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
    • Quiz
    • 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
    • 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 ;)
    • 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
    • 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
    • A retenir
    • 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
    • ...
    • 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
    • Questions Ou trouver les slides des Viadeo Tech Days ? Dans vos clés USB http://techdays.viadeo.com/ http://dasini.net/blog/
    • :)
    • 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