Pour le peu de lecteur que vous êtes à suivre mon blog vous avez (PAS) dû vous rendre compte de l'indisponibilité du site pendant 3 jours, j'ai le plaisir de vous annoncer qu'après 2 jours de rush, des litres de café, du talent et une touche de chance le site est de retour sur les internets !
Un petit résumé sur les événements et de cette mésaventure
Vendredi 8h30 revenant de déplacement sur un site dans l'est de la France je commence la journée de travail avec l'idée d'être le moins productif (Oui la semaine a été dur). Je commence la journée avec des plaisanteries et quelques trolls avec les collègues (Bah oui se charier c'est la base d'une bonne ambiance) et soudain des compliments de la part de mes chers collègues et chef d'équipe sur mon site me sont adressés (Je vous remercie encore et vous salue).
Sur ces bonnes paroles je décide donc d'y faire un tour pour contempler cette œuvre minuscule mais qui est mienne et là, première sueur froide d'une longue série :
Le site ne répond pas sur le 80 & 443 ni au ping, DAAAMN que ce passe t-il ? un tour sur la console KVM de l'hebergeur et la 2eme sueur froide :
PXe Boot from disk ...
Argggh le genre d'erreur que je déteste, dans mon moment de détresse je décide d'ouvrir un ticket chez l'hebergeur qui me signal qu'un mode rescue est possible pour débugger, bon ... allons y
Donc effectivement le disque est montable et cela me permet d'accéder au système de fichier, première bonne nouvelle. En regardant les logs je constate un kernel panic, (3eme sueur froide), Je n'ai jamais réussi à réparer un kernel panic, des codes d'erreur hexa, des lignes de code ressemblantes a du reverse engineering, en bref tout ce que je déteste.
Sachant que je suis au travail et qu'il me reste des tâches à accomplir je ne fais que d'y penser en m'empressant de tout terminer pour retourner au domicile réparer cela tranquillement. Grâce aux grosses horaires effectuées pendant le déplacement j'ai pu rentrer en avance (Merci le chef de m'avoir laissé partir un peu plus tôt)
16h Allumage de PC, coulage de café et go au charbon, on commence par créer une archive de tout le FS et à la récupérer sur le PC perso au passage je la copie sur le serveur de stockage perso. On commence à écumer le web à la recherche de problème similaire, effectivement nombres ont été dans cette situation et je constate peu de succès sur la remise en marche.
18h40 Malgré les nombreux essais, peu de réussite, je décide donc d'utiliser mon joker Youbi, Ancien collègue de promo qui possède un skill lvl légendaire sur les systèmes linux (oui il voit l'atmosphère en hexa comme dans matrix). Sur cet appel il me propose de passer le voir, je m'y empresse en y emmenant quelques bières (l'action ça donne soif)
19h Le plaisir de le revoir et d'être aidé sur cette intervention m'apporte bonne humeur et un certain réconfort, on commence les hostilités, lecture des logs, test en tout genre en vain. youbi et sa douce m'invite à manger chez eux j'accepte avec grand plaisir. On reprend le travail, test de changement de noyau au boot, en vain ... Cela semble impossible à débugger ce fucking serveur ce qui nous fait arriver à la conclusion suivante :
On à les backups ? Go réinstaller le VPS et tout restaurer. Ça me semble honnête SAUF que je n'ai jamais tenté de restaurer le CMS et la BDD avec les backups (4eme sueur froide). Je rentre chez moi et je commence à tout refaire et la, le début d'un long moment de travail :
23h Installation du CMS, copie du dossier de l'application, de la base de donnée, des configurations avec les attributs d'origine, Bon on redémarre les services et la .. MySQL est foiré .. Vous le sentez venir ??
Oui je n'ai pas fais de mysqldump, je dispose uniquement des fichiers sql brute (fichiers .ibd .frm ...) La BDD semble crashée, 5eme sueur froide je suis peu doué sur SQL, je sens que la nuit va être longue ...
1h du matin Je test, je cherche, je débugg, le café et la sueur coule à flot et pendant ce temps là, la nuit passe. Je réussi à tricher en utilisant un fichier json mais qui est trop vieux, les vieux articles en V1 apparaissent mais pas le reste, je ne peux pas accepter cela c'est trop peu.
5h du matin j'adopte la technique du "Je lâche l'affaire quand je reprendrai cela demain ça ira mieux" Hop go dodo
Lendemain 11h on ré-attaque, On retente diverses solutions mais les tables sembles crashés, les outils mysqlcheck, mysqlfrm sont inefficaces, la journée passe. J'utilise mon deuxième joker, la connaissance argentin développeur (Avec un gros skill) qui me conseille quelques tips :
18 h Je tente un drop d'une table mais toujours rien, en effectuant un strings sur le fichier posts.ibd je vois tous mes articles en texte mais complètement désordonnée, j'adopte la solution "Je réécris tout à la main en PLS" je démarre sur la BDD toute fraiche et toute vide.
19h je lâche l'affaire cela est trop long et trop fastidieux puis je me radote "j'aurai du mieux backuper, j'aurais du tester" moi qui donne des conseils la dessus, cela est bien ironique.
Je re-test de démarrer SQL et GHOST avec l'ancienne BDD planté et la ... IT WORK ! WOOOOOOH tous mes articles revenus, je mysqldump rapidement la base et j'exprime mon contentement du mieux que je peux (mon coloc en est témoins).
J'ignore comment cela est possible je n'y comprend rien mais ça marche, c'est le principal cependant 90% est effectué. Oui la table que j'ai supprimé étai celle contenant les tokens d'authentification ducoup plus de connexion possible pour gérer le site.
Solution : Mysqldump de la table d'un ghost CMS réinstallé à neuf et réinjection de celle-ci dans la base restaurée et là .. IT WORK 100%. On sauvegarde le tout proprement, il est 20h on refera tout ça proprement demain après quelques bières et du repos.
3 Février Le matin on ré-attaque tout ça et on réinstalle un VPS neuf (au passage upgrade de celui-ci : 80Go de disque et snapshot) et a 11h j'ai le plaisir d'annoncer que le site est de retour sur les internets.
Bilan de tout ça : Du talent, de la chance, du café et un week end passé la dessus
Moral de l'histoire : Backupez vraiment et surtout testez la restauration sous peine de pas avoir autant de chance et de tout perdre. J'aurais appris beaucoup de cette expérience.