Comment mettre à niveau MariaDB 5.6 vers MariaDB 10.X ?

I. Présentation

Dans ce tutoriel, je vais vous expliquer comment mettre à niveau MariaDB 5.6 vers une version plus récente de MariaDB 10.X, par exemple MariaDB 10.3 ou MariaDB 10.6. Cette procédure s'applique aussi bien à CentOS qu'à Debian.

Il est à noter que pour migrer vos bases de données de MariaDB 5.6 sur un serveur A vers MariaDB 10.X sur un serveur B, vous devez d'abord mettre à niveau l'instance sur le serveur source. Sinon, la restauration de votre sauvegarde SQL échouera dans de nombreux cas (je pense que cela dépend en partie de la complexité de la base de données).

Je vous recommande également la lecture de la documentation sur le site MariaDB, pour prendre en compte les subtilités qu'il pourrait y avoir quant au saut de versions que vous souhaitez effectuer (par exemple : fonctions non supportées ou modifiées).

MariaDB Upgrade Path

Les étapes décrites dans ce tutoriel sont à respecter dans l'ordre et sont classiques pour mettre à niveau une instance de MariaDB. Prenez vos précautions en matière de sauvegarde avant de commencer. Ma machine source est sous CentOS, celle de destination sous Debian, mais toutes les commandes peuvent être adaptées à votre environnement.

II. Faire un dump de toutes les bases de données MariaDB

Nous allons commencer par effectuer une sauvegarde de l'intégralité des bases de données de votre serveur MariaDB dans son état actuel.

Note : assurez-vous d'avoir suffisamment d'espace disque votre serveur pour stocker une sauvegarde complète de toutes vos bases de données. La commande "df -h" pourra vous aider.

Sur le serveur source, connectez-vous en SSH et utilisez le compte "root" (sinon ajoutez "sudo" devant les commandes avec un compte qui dispose des droits).

Pour effectuer une sauvegarde et stocker celle-ci dans le dossier "/tmp/" :

mysqldump -u root -p --all-databases > /tmp/backup-bdd.sql

Vous devrez indiquer le mot de passe de l'utilisateur "root" de votre instance MariaDB pour effectuer la sauvegarde. Prenez un café pendant la sauvegarde 😉.

III. Ajouter le dépôt MariaDB sous CentOS

Pour récupérer une version plus récente de MariaDB, on va devoir ajouter un nouveau dépôt sur notre machine. Avant cela, mettez à jour votre cache de paquets :

# CentOS
yum update
# Debian
apt-get update

Ensuite, on va créer un fichier pour ajouter le dépôt MariaDB sur notre machine CentOS.

vi /etc/yum.repos.d/MariaDB.repo

Dans ce fichier, indiquez le code suivant :

# MariaDB 10.1 CentOS repository
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Vous pouvez remarquer que l'on spécifie la version 10.1. Lorsque j'ai eu à faire une migration de MariaDB 5.6 vers MariaDB 10.X, j'ai préféré passer par la version 10.1 pour ne pas viser trop haut et tout faire cracher...

Sur Debian, l'ajout de ce dépôt sera différent et dépendra aussi de votre version de Debian. Pour avoir un MariaDB 5.6, c'est surement une ancienne version de Debian. Voici les informations sur le site de MariaDB où c'est bien documenté : MariaDB - Repositories

Par exemple pour Debian 8 :

sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.2/debian jessie main'

IV. Désinstaller MariaDB 5.6

On va se débarrasser de ce bon vieux MariaDB 5.6. Pour cela, exécutez la commande correspondante à votre système (CentOS ou Debian) :

# CentOS
yum remove mariadb-server mariadb mariadb-libs
# Debian
apt-get purge mariadb-server mariadb mariadb-libs

Pour finir, on va nettoyer complètement le cache de notre gestionnaire de paquets. Comme ça, lorsque l'on va relancer l'installation de MariaDB, le système ira piocher dans notre nouveau dépôt.

# CentOS
yum clean all
# Debian
apt-get clean all

V. Installer MariaDB 10.1 (ou une autre version)

Puisque l'on cible MariaDB 10.1 dans notre dépôt, on va pouvoir installer cette version. Vous pouvez monter plus haut si vous le souhaitez, mais personnellement je n'ai pas essayé (les retours m'intéressent, j'ai préféré opter pour une étape intermédiaire).

# CentOS
yum -y install MariaDB-server mariadb-client
# Debian
apt-get install mariadb-server mariadb-client

Lorsque l'installation est effectuée, on va en profiter pour démarrer le service et activer son démarrage automatique (pas indispensable si le serveur est amené à disparaître au profit d'un nouveau).

systemctl start mariadb
systemctl enable mariadb

VI. Exécuter mysql_upgrade

Il est important d'exécuter la commande mysql_upgrade pour que l'instance MariaDB effectue une mise à niveau de vos bases de données. Cela va permettre de rendre les bases de données actuelles compatibles avec la nouvelle version installée.

mysql_upgrade

Cette action relativement rapide est indispensable ! 😉

Si besoin, vous pouvez relancer cette opération :

mysql_upgrade --force

Vous pouvez vérifier que votre instance de MariaDB tourne bien sur la nouvelle version :

mariadb -V

Bonne nouvelle ! L'instance MariaDB de votre serveur tourne sur une nouvelle version ! Il ne faudra pas se contenter de la version 10.1 puisqu'elle est déjà ancienne.

Dans ce cas, il faut modifier de nouveau les dépôts pour pointer vers une version plus récente, puis recommencer la suite du tutoriel. Dans sa documentation, MariaDB précise à chaque fois qu'il faut désinstaller MariaDB pour le réinstaller dans sa nouvelle version. Néanmoins, un update sur place peut suffire sur des petits sauts de version.

Enfin, supprimez la sauvegarde de vos bases de données effectuée au début si tout est OK pour vous.

rm /tmp/backup-bdd.sql

VII. Déplacer les bases de données sur un nouveau serveur

Si vous souhaitez déplacer vos bases de données sur un nouveau serveur, suivez la suite de ce tutoriel. Je vous recommande d'avoir la même version de MariaDB des deux côtés pour éviter les mauvaises surprises.

Commencez par refaire une sauvegarde des bases de données. C'est important puisqu'entre temps, les bases de données ont subi un "mysql_upgrade" qui n'est pas anodin 😉.

mysqldump -u root -p --all-databases > /tmp/backup-bdd.sql

Lorsque c'est fait, transférez le fichier SQL sur votre nouveau serveur. La commande "scp" pourra être utile pour le récupérer directement par SSH. Par exemple, depuis le nouveau serveur on peut récupérer la sauvegarde à distance :

scp -r <utilisateur>@<ip-serveur-source>:/tmp/backup-bdd.sql /tmp
scp -r [email protected]:/tmp/backup-bdd.sql /tmp

Sur le nouveau serveur, on va restaurer la sauvegarde de toutes les bases de données et de la configuration associée :

mysql -u root -p < /tmp/backup-bdd.sql

Si votre sauvegarde est imposante, c'est-à-dire plusieurs giga-octets, il se peut qu'une erreur soit renvoyée dès le début de l'importation. Dans ce cas, modifiez temporairement deux paramètres dans votre MariaDB pour accepter ce fichier volumineux :

mysql -u root -p

Puis, saisissez ces deux commandes :

set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;

Relancez la restauration de la sauvegarde :

mysql -u root -p < /tmp/backup-bdd.sql

Une fois que la restauration est terminée, redémarrer votre instance MariaDB :

systemctl restart mariadb

Vérifiez que vos applications fonctionnent correctement ! 👍👍

Si ce n'est pas encore fait, vous pouvez effectuer les montées de version sur le serveur de destination. Il n'était peut-être pas totalement à jour pour être en phase avec le serveur source.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau et cofondateur d'IT-Connect. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3219 posts and counting.See all posts by florian

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.