Skip to main content

Upgrade de mysql/madiadb

Alors...

Des fois tu as un serveur de bd qui tourne bien depuis longtemps. Oh tu as juste 2 ou 3 truc dessus, genre moi par exemple j'ai ma bd pour nextcloud et phpmyfaq. Ca tourne tout seul, une petit script pour les backup, et un peu de surveillance netdata adaptée pour mysql et le tour est joué.

Et puis un jour, parce que ce jour la tu as décidé que c’était le jour des patchs (et il faut bien le dire, sans patchman ben tu ferais quasiment jamais tes updates, avoue le!) ben tu décide de mettre a jour mysql! ou mariadb ça dépend qu'elle merde tu as installé.

Bref, j'ai eut une panne sur proxmox il y a pas longtemps et j'avoue que je ne me souvenais plus très bien ce que j'avais fait sur cette vm de base de données. Il me semblaiit que j'avais voulu mettre a jour mariadb parce que... ca faisait longtemps (je sais je sais... mes critères sont pas très serieux). J'avais donc lu un peu la doc officiel et surtout une article random sur le net et hop voici que j'ajoute (et que je me retrouve) avec un repo pour mariadb 11. J'ai du faire des trucs mais en tout cas, Nextcloud fonctionnais encore.

Une fois ma panne de proxmox corrigée, j'ai regardé si mes services sont disponibles a nouveau ou pas. Dans la partie "web" j'ai Nextcloud, cet outil de documentation Bookstack et phpmyfaq. J'aime cette solution pour enregistrer de la connaissance (pas de la doc mais des HowTo, une question simple qui peux donner des reponsesréponses complètes ou courtes) mememême si j'Avouej’avoue que je ne la popule pas beaucoup.

Bref, phpmyfaq marche plus..

ÉvidementAu départ je vois que le service mysql (ou mariadb) je fonctionne pas et etrangement il semble s'appuyer sur le bon mysqld qui est en fait un line symbolqie vers mariadbd qui.. n'existe plus. On dirait que dans mes tentatives de mettre a jour j'ai meme pas regardé si les version de mariadb qui viennent avec centos (oui je suis encore sur centos parce que j'ai pas migré cette vm vers autre chose) ou alors d'un repo de mariadb que j'ai ajouté suivant la doc officielle.

Donc je me mets a installer la partie server de mariadb qui vient du bon repo pour avoir le binaire adéquat. une fois fait le service démarre, c'est déjà ça.. pfiou..

Sauf que maintenant phpmyfaq m'affice une belle page blanche (Nextcloud lui fonctionne)

Alors je met le mode debug de l'application (Merci au developpeurdéveloppeur d'avoir prevuprévu cette option elle sauve vraiment la vie!). Il me dit que la connectionconnexion a la bd marche mais un problème sur l'UTF8

Donc, incomprehension, colere, panique, frustration.

Je regarde un peu les version des packages installé et la j'ai un peu de tout:

  • Du rpms de server en version 10.4
  • Des rpms de client, lib, compat en version 10.9
  • Des logs qi semble me dirent que la "collation" est pas correcte

Merde.. ca va m'obliger a chercher..

Je regarde a droite et a gauche pour tenter de devenir un expert en encodage de caractere dans une bd en moins de 1 heure mais je suis aps sure qu'il y ait vraiment un problème en fait.. 

Certains post m,indique que je pourrais modifier la definition dans la bd, les tables ou alors dans le dump de la bd elle-même pour la réimporter.

Hum..

J'essai meme le mariadb-upgrade vu que je sais pas si je doit etre sur la version d'orgine 5.x, la 10.4 ou la 10.6 (les repos etaient a la version 11 a un moment).

En clait, c'est pas très clair...

J'envisage un restore de vm.. puis je me dit a ce stade "Tentons de mettre les rpms au même niveau"

Je fait un beau cleanup de package en espérant qu'il n'y ait pas de trop de dépendance (si! il y en a une sur postifx qui doit etre desinstallé mais pas si grave je peux le réinstallé après).

Pour le fun je tester d'installer la version 5.x venant de centos mais mais merde grave donc je sais que c'est pas la bonne version. 

Re-cleanup,  pus j'installe la 10.4 venant des repos mariadb

La mes packages rpms sont tous bien a 10.4 et je réinstalle postfix.

Miracle. Joie. Tout refonctionne a nouveau.

Leçons apprises:

  • Fait un check avec un truc comme uptime kuma pour voir si ton application web est bien up, surtout celles qui utilisent une bd ca peux te donner un indice.
  • Assusres toi que tes backup de bd fonctionne (je pensais a un CI pour tester un restore dans un docker ca serait cool pour la validation...)
  • Assures toi que tes backups de bd soient sur une autre vm (moi j'utilise burp qui prend en backup le dossier de la ou le script de backup dépose les dumps)
  • Si tu as un cron job, ca serait bien de monitoré si ca s'est bien passé avec un truc comem healthcheck (je l'ai pas pas encore configuré proprement...)
  • Chaque mise a jour d'OS devrait valider la version de bd utilisée.
  • Chaque upgrade server de BD doit etre bien testée ET PAS EN PROD
  • Documente ta VM pour les versions.