38
Viadeo Tech Days, Paris 22-11-2012 MHA : MySQL haute disponibilité @ Viadeo

MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Viadeo Tech Days, Paris 22-11-2012

MHA : MySQL haute disponibilité @ Viadeo

Page 2: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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 ? C'est...Zoom sur Master High AvailabilityQuizA retenir... (eh oui, ça fait déjà 1800 secondes)

Page 3: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Me, myself & I

Olivier DASINIExpert MySQL chez Viadeo@freshdazhttp://dasini.net/blog/Co-fondateur du MySQL User Group Francophone (LeMug.fr)● http://lemug.fr

Co-auteur des livresAudit et optimisation – MySQL 5, Bonnes pratiques pour l’administrateur● Eyrolles, ISBN-13: 978-2212126341MySQL 5 – Administration et optimisation● ENI, ISBN-13: 978-2-7460-5516-2MySQL 5.6 – Administration et optimisation (février 2013)

Page 4: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Viadeo en quelques chiffres

L' OLTP chez Viadeo c'est :2 To de donnéesUn certain nombre de « Grosses » tables● Jusqu'à 1 milliard d'enregistrements● Jusqu'à 350Go23 serveurs en 5 shards qui se répartissent 20000 requêtes chaque secondeMySQL Replication sur chaque shard (1 master + N slaves)Plus des serveurs (slave) spécialisés (backup, besoin métier,...)

Page 5: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Dis, c'était comment avant ?

Page 6: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Direct routing & Co

Page 7: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Dis, c'était comment avant ?

Direct routingLoad balancer : IPVS, least connectionLecture client : VIP de lectureÉcriture client : IP directe sur le master

Réplication MySQLPartage de la charge de lectureSauvegarde non bloquanteContinuité de serviceRedondance géographique

Méthode pour changer de masterA l'arrache !

Page 8: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Dis, c'était comment avant ?

Ce qui va plutôt bien L'architecture générale n'est pas vraiment problématiqueIPVS un peu « touchy » à configurerIPVS n'est pas la solution la plus soupleMais ce n'est clairement pas le problème

Ce qui va moins bienLa 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 »

Page 9: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

MySQL Replication

Page 10: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Mini zoom sur MySQL Replication

Tout est bon dans la réplication (enfin presque)

Page 11: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Mini zoom sur MySQL Replication

La réplication MySQL, c'est cool ! Utilisée chez Viadeo pour :Scalabilité horizontaleSauvegardeFailover

Existe depuis MySQL 3.23.15AsynchroneUn seul master

Page 12: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Que choisir ?

Page 13: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Que choisir ? options envisagées

Dual master1 machine en « spare »Risque d'incohérences entre le master & les slaves en cas de crashRisque d'incohérences entre les slaves en cas de crash

Semi-Synchronous ReplicationMySQL 5.5+Peut réduire les performancesRisque d'incohérences entre le master & les slaves en cas de crashRisque d'incohérences entre les slaves en cas de crash

Pacemaker + DRBDDurée du « crash recovery » Machines en « spare »

MySQL ClusterMoteur de stockage NDB

Global transaction IDMySQL 5.6+

Page 14: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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éesFacile à installer● Car à cause de Facebook je n'ai plus beaucoup de temps pour travaillerGratuite● Car j'aimerai avoir une augmentation ce coup ci !Sans surcoût● Car mon chef est de toute façon un gros radinQui fonctionne avec notre version de MySQL ● Fatigué de corriger les bêtises de mes devsQui ne m'oblige pas à changer d'architecture● Fatigué de corriger les bêtises de admins sysPerformante● Je suis motard, j'aime quand ça va vite :)

P.S. Cette année j'ai été sage... (lol)

Page 15: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Le changement ? C'est...

Page 16: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Gateway

Page 17: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Le changement ? C'est... Gateway

GatewayLoad balancer : HAProxy 1.4, least connectionLecture client : VIP de lectureÉcriture client : VIP d'écriture

Réplication MySQLPartage de la charge de lectureSauvegarde non bloquanteContinuité de serviceRedondance géographique

Méthode pour changer de masterMHA

Page 18: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Le changement ? C'est... HAProxy

2 groupes de tests effectués par HAProxy

Test1Service MySQL UPServeur MySQL administrativement IN / OUTServeur MySQL appartenant à la VIP d'écriture (Master)

Test2Service MySQL UPServeur MySQL administrativement IN / OUTServeur MySQL appartenant à la VIP de lecture (Slave)

Page 19: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

MHA

Page 20: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Zoom sur MHA

Master High AvailabilityAuteur: Yoshinori Matsunobuhttp://yoshinorimatsunobu.blogspot.fr/

Téléchargement de MHAhttp://code.google.com/p/mysql-master-ha/.deb, rpm, tar.gz

Buts de MHAPromouvoir 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 masterMinimiser 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

Page 21: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Zoom sur MHA, principales caractéristiques

Simple à mettre en œuvreScripts PERLMySQL 5.0+Indépendant du moteur de stockageNe nécessite pas de changement d'architecturePas de coûts supplémentaires (ou presque)

Le manager à une faible empreinteInstallé sur une machine virtuelle à Viadeo

PerformantJusqu'à présent, la bascule n'a jamais dépassée 2 secondes

Compatible avec la réplication asynchrone

Page 22: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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 manuelmasterha_manager : supervision du master & basculement auto en cas de crash

Sur les slaves (MHA node) :save_binary_logsapply_diff_relay_logspurge_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 SSHVérification de la réplication...

Scripts optionnelsmaster_ip_online_change_script : script externe lancé lors de la bascule manuelle...

Page 23: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Zoom sur MHA, utilisation chez Viadeo

masterha_master_switch : basculement manuelFailover & 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>

Page 24: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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_scriptObjectif cohérence des donnéessub 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 ...

Page 25: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Zoom sur MHA, scripting

master_ip_online_change_script : script externe lancé lors de la bascule manuelle

Ajouts ViadeoKill 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

Page 26: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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éesCohérence du nouveau master avec le master original● Récupération des logs binaires du master si possibleCohérence des slaves avec le nouveau master● Rattrapage de l'éventuel retard des slaves

Page 27: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Quiz

Page 28: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Quiz

J'ai un « too many connections » sur le master !

a) J'augmente le nombre max de connexionsb) Je switch le master avec MHAc) Je prend un p'tit rhum vieux et j’attends que ça passe

Page 29: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Quiz

Load de 180 !!! sur le master

a) Je me tape un CRS (Citron vert, Rhum blanc, Sucre) et j'attendsb) Je switch le master avec MHAc) Je redeviens développeur ;)

Page 30: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Quiz

Grosse modification de structure d'un table (5h)

a) Je mets à jour les slaves puis en promeus un en master avec MHAb) Je l'exécute sur le master, en buvant un planteur de la Martiniquec) J'utilise pt-online-schema-change

Page 31: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Quiz

Changement de conf à froid et/ou hardware

a) Je me sers un p'tit rhum agricole de la Guadeloupeb) J’attends que le besoin disparaisse c) Je mets à jour les slaves puis en promeus un en master avec MHA

Page 32: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

A retenir

Page 33: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

A retenir

MHAMinimise la perte de données avec le masterAssures la cohérences des slaves entre euxReconfigure automatiquement la réplicationMinimise l’arrêt (ou la dégradation) de serviceSimple● A utiliser● A comprendre● A installerPas de changement ● d'architectures● de moteurs de stockage (Idéal avec InnoDB)● de logiques métierPerformant● Quelques secondes de downtime (moins de 2)Fonctionne à partir des version supérieures à MySQL 5.0.45Open source

Page 34: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

...

Page 35: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Merci

A la team ViadeoAnnaAurélienBouzianeMarinaNicolasSabri et son équipeXavierYorick...Et toutes les « petites mains »

Aux conférienciersLoïc Dias Da SilvaOlivier Hory & Frédéric PerrinAmélie Boucher & Julien HilionPierre KillyXavier KrantzEmanuele PecorariFrançois Le LayNicolas TricotDamien HardyOlivier Dasini

A toi public

KeynoteArnaud DevigneJean-Marc PotdevinStefan Fountain

Page 36: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

Questions

Ou trouver les slides des Viadeo Tech Days ?Dans vos clés USBhttp://techdays.viadeo.com/http://dasini.net/blog/

Page 37: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

:)

Page 38: MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini

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