Retour dans le passé pour ZdS :(

On aurait préféré revenir vers le futur, mais Murphy ne nous a pas trop laissé le choix de la destination…

Salut à tous, l'équipe technique au hautparleur.

Vous vous en êtes peut-être aperçu par le regain d'activité récent du côté technique, certaines choses bougent. Et ce n'est pas sans conséquence.

Des causes…

Nous en reparlerons dans un article à venir, mais en deux mots, nous avons changé d'hébergeur et la direction technique du projet va changer de mains.

Le 9 juillet, le Conseil d'Administration de Zeste de Savoir a validé la migration de notre serveur de production, celui qui héberge donc le site que vous voyez en ce moment, d'OVH vers Gandi. Ce nouvel hébergeur était en test depuis fin mai.

Toutes ces transitions ne sont pas sans douleur ni tracas. Remettre les clés, faire le tour du propriétaire, transmettre les tâches, se les approprier, s'assurer que tout est au top. Beaucoup de travail, comme pour un album d'Astérix.

En plus de ça, une tuile nous est tombée dessus cet après-midi. Vers 14 h 30, une baie de disques (c.-à-d. un serveur responsable du stockage de données) a crashé chez Gandi. Pas de bol, un des clients impactés était Zeste de Savoir. Nous avons pu rétablir le service rapidement vers 15 heures et sommes retournés à nos tâches respectives. Tout semblait être revenu à la normale.

Le mot-clé est « semblait », car sous des dehors calmes paisibles, une terrible catastrophe couvait. Le fichier de données de la base MySQL avait été subtilement corrompu lors du crash de 14 h 30. Tout s'est donc passé normalement, jusqu'au moment où le serveur a tenté d'utiliser la partie endommagée du fichier… ce qui l'a définitivement abimé. Devant l'étendue des dégâts, le serveur MySQL a préféré rendre l'âme et cesser de fonctionner tant qu'on ne lui fournirait une version corrigée des données. Las ! Le problème était tel que, malgré quatre heures d'efforts conjointement menés par SpaceFox, gustavi et victor, rien ne put être sauvé.

Dans cette situation, nous aurions normalement dû restaurer la sauvegarde quotidienne de la base de données… sauf que cette sauvegarde n'existait pas. Pas plus que toutes celles qui auraient dû exister depuis plus d'un mois ! Heureusement, gustavi avait lancé une sauvegarde manuelle pour mettre à jour le serveur de bêta le 11 juillet vers 23 heures ; c'est donc ces données que nous avons pu rétablir. La raison de cette disparition des sauvegardes de la base de données est encore mystérieuse. Une étude rapide des logs montre qu'elle a été paramétrée et validée, puis que le logiciel de sauvegarde a purement et simplement été supprimé du serveur – sans que personne ne s'en rende compte, puisque les sauvegardes et leurs copies avaient été testées auparavant.

… et leurs conséquences

Commençons par la mauvaise nouvelle :

Tout ce qui a été enregistré en base de données entre le lundi 11 juillet 2016 23 h et le mercredi 13 juillet 2016 18 h 30 est définitivement perdu.

Ceci inclut :

  • Les forums (sujets, messages, pouces rouges et verts).
  • Les messages privés.
  • Les comptes et les données liées. Si vous vous êtes inscrits pendant la perte de données, je crains qu'il ne faille vous réinscrire.
  • Les notifications et suivis de sujets et forums activés pendant ces deux jours.
  • Les métadonnées des galeries d'images (mais pas les images elles-mêmes, cf. infra).

Ensuite, la bonne nouvelle (si l'on peut dire) :

Aucun contenu en rédaction n'a été perdu.

Cependant, à cause de la désynchronisation entre la base et les contenus sur le disque, il se peut que les interfaces d'éditions présentent des comportements étranges ; le cas échéant, manifestez-vous sur le forum Bugs et Suggestions.

Ceci concerne :

  • Les tutoriels.
  • Les articles.
  • Les images dans les galeries.

L'intégrité des contenus en rédaction est garantie par le stockage sous-jacent et a été vérifiée.

Never gonna let you down

Nous allons redoubler d'efforts pour que ça ne puisse plus se produire. S'il le faut, nous mettrons en place un système d'alerte qui surveillera que le système chargé d'alerter l'équipe technique quand le système chargé d'envoyer une alerte au cas où le monitoring du système d'alerte en cas de sauvegarde pas faite devait planter.

Plus sérieusement, nous allons surtout revoir notre système de sauvegarde. Une sauvegarde quotidienne ne suffit clairement plus à vous contenter, cher public toujours au rendez-vous, public précieux et exigeant. La stratégie mise en place fera également l'objet d'une mention dans une news/article à venir, mais est déjà effective sur certains points : la sauvegarde quotidienne a été remise en route, et le système de snapshots de Gandi a été activé. Le reste est en cours de réflexion. Le système actuel n'était là que pour pallier une défaillance des systèmes de stockage professionnels théoriquement très résilients ; hélas, la loi de Murphy fait que malgré les moult redondances et tolérances de pannes, c'est la seconde perte de données que subit Zeste de Savoir. Ce qui est une honte et deux de trop !


Nous, l'équipe technique de Zeste de Savoir, vous présentons nos excuses pour les importants désagréments engendrés. Nous en sommes conscients et ça nous peine. Nous ferons mieux.

gustavi, SpaceFox et victor

32 commentaires

Par contre j'ai le flux des derniers sujets (publics), neuf d'entre eux ont disparu :

  • Quelle est la ressource partagée ? dans Programmation par Lern-X

SpaceFox

Pour celui-ci j'ai la copie de l’intégralité des messages dans mon cache si ça intéresse.

EDIT: et pour les autres sujets perdus, le cache google pourrait servir, mais il faudrait sans doute l'exploiter avant qu'il ne soit rafraîchi.

+0 -0

Ce matin je suis allé voir si il y avait du nouveau sur le topic sur le quadricoptère, je comprenais rien parce que j'arrivais pas à le trouver. Maintenant j'ai compris :D

Comme on dit, shit happens. Merci à tout ceux qui se sont penchés sur le problème !

Et bien effectivement c'est une sacré cascade de malchance.

D'autant plus que pour corrompre une base InnoDB c'est quand même rare (surtout que MySQL ne sache pas la réparer), mais bon tout ce qui peut arriver arrivera :p.

La solution si votre budget le permet pourrait être d'avoir une réplication de MySQL afin de palier à la perte du serveur principal (disque corrompu, serveur en panne…)

+0 -0

D'autant plus que pour corrompre une base InnoDB c'est quand même rare (surtout que MySQL ne sache pas la réparer), mais bon tout ce qui peut arriver arrivera :p.

Toshy62

De ce que j'ai compris de la panne, MySQL n'a rien pu faire parce que

  1. ce sont les données et non l'index qui ont été corrompus (il existe entre autre une procédure de récupération qui consiste à supprimer purement et simplement les fichiers d'index puis à redémarrer et attendre qu'ils soient reconstruits) et
  2. parce que la corruption est arrivée hors du contrôle de MySQL (ce n'est pas une tentative d'écriture qui a échoué, par exemple), ce qui annihile la majeure partie des défenses de MySQL.

La solution si votre budget le permet pourrait être d'avoir une réplication de MySQL afin de palier à la perte du serveur principal (disque corrompu, serveur en panne…)

Toshy62

Pour l'avoir mise en place au boulot, on pourrait imaginer ça, mais ce n'est pas la panacée : la synchronisation demande une surveillance, et est galère à remettre en place si elle saute (ce qui peut arriver à la moindre indisponibilité réseau). De plus, ça pose un certain nombre de problèmes de sécurité, surtout si les 2 serveurs ne son pas sur le même LAN.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte