Mise à niveau de MySQL 5.7 vers 8.0 sur CentOS/RHEL

upgrade mysql de la version 5.7 vers version 8

La mise à niveau des versions majeures de MySQL peut être un processus complexe en raison de problèmes de compatibilité potentiels et de changements de configuration entre les versions. Dans ce tutoriel, nous allons parcourir le processus complet de mise à niveau de MySQL 5.7 à 8.0 sur des serveurs CentOS/RHEL 7/8.

Les étapes clés que nous allons couvrir sont :

  • Préparation de la mise à niveau en sauvegardant les données et en validant la configuration
  • Installation des nouveaux dépôts MySQL 8.0
  • Arrêt et suppression des anciens packages MySQL 5.7
  • Installation des nouveaux packages MySQL 8.0
  • Démarrage de MySQL 8.0 et exécution des étapes post-installation
  • Validation de la mise à niveau et modifications de configuration nécessaires

Suivre ce processus aidera à assurer une mise à niveau en douceur et réussie vers MySQL 8.0.

Conditions préalables

Avant de commencer le processus de mise à niveau, assurez-vous que votre système répond aux conditions préalables suivantes :

  • Système d’exploitation CentOS/RHEL 7 ou 8
  • Installation existante de MySQL 5.7 à partir des dépôts CentOS/RHEL par défaut
  • Toutes les données MySQL importantes ont été sauvegardées
  • Vous avez une fenêtre de maintenance pour mettre MySQL hors ligne pendant la mise à niveau
  • Vous avez les privilèges root ou sudo sur le serveur pour installer les logiciels

Étape 1 – Sauvegarde et préparation

Pour éviter toute perte de données, il est crucial d’effectuer des sauvegardes avant de commencer le processus de mise à niveau. Voici les étapes clés de sauvegarde :

Sauvegarde des données MySQL

Utilisez mysqldump pour créer des sauvegardes logiques de toutes les bases de données :

$ mysqldump --all-databases --routines --events > mysql_backup.sql

Stockez ce fichier de sauvegarde dans un emplacement sûr en dehors du serveur.

Vous pouvez également effectuer des sauvegardes binaires comme des instantanés de système de fichiers ou des instantanés LVM comme protection supplémentaire.

Vérifier et sauvegarder la configuration

Les principaux fichiers de configuration MySQL pouvant nécessiter des mises à jour après la mise à niveau sont :

  • /etc/my.cnf – Le fichier de configuration MySQL principal
  • /etc/my.cnf.d/ – Contient des extraits de configuration qui remplacent my.cnf
  • /var/lib/mysql/ – Contient les fichiers de base de données

Passez en revue ces fichiers et sauvegardez-les dans un emplacement sûr. Accordez une attention particulière à tous les paramètres personnalisés tels que les chemins de fichiers journaux, l’allocation de mémoire, etc.

Après la mise à niveau, nous devrons fusionner les configurations personnalisées nécessaires dans les nouveaux fichiers.

Enregistrer tous les utilisateurs MySQL

La mise à niveau pourrait potentiellement affecter les comptes utilisateur et les autorisations. Capturez une liste de tous les utilisateurs actuels en exécutant :

mysql> SELECT User, Host FROM mysql.user;

Cela vous permettra de recréer ou de corriger les utilisateurs si nécessaire après la mise à niveau.

Tester et valider la réplication (si utilisée)

Si vous utilisez la réplication MySQL, assurez-vous que la réplication est saine et que tous les serveurs sont complètement synchronisés avant de commencer la mise à niveau.

Effectuez des écritures et des lectures de test sur le maître et les esclaves pour valider. Résoudre les problèmes de réplication avant de continuer.

Étape 2 – Installer les dépôts MySQL 8.0

Maintenant, nous sommes prêts à configurer les nouveaux dépôts MySQL 8.0. Cela nous permettra d’installer les dernières versions MySQL 8.0 à l’aide de yum.

Tout d’abord, installez la clé GPG MySQL :

$ rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

Cela permet d’authentifier les paquets RPM de MySQL.

Ensuite, installez le paquet du dépôt communautaire MySQL :

$ yum install https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

Cela configurera la configuration du dépôt yum MySQL 8.0.

Actualisez vos données de dépôt :

$ yum makecache

Votre système CentOS/RHEL peut désormais installer MySQL 8.0.

Étape 3 – Arrêter MySQL 5.7 et supprimer les packages

Nous devons maintenant arrêter correctement MySQL 5.7 et supprimer les anciens fichiers de package.

Arrêter le service MySQL

Arrêtez le service MySQL :

$ systemctl stop mysqld.service

Vérifiez qu’il s’est arrêté correctement :

$ systemctl status mysqld.service

Supprimer les anciens packages MySQL

Ensuite, utilisez yum pour supprimer uniquement les packages MySQL 5.7 :

$ yum remove mysql-community-client-5.7* mysql-community-common-5.7* mysql-community-libs-5.7* mysql-community-server-5.7*  

Cela laissera les fichiers de configuration en place, que nous nettoierons plus tard.

Étape 4 – Installer MySQL 8.0

L’ancienne version ayant été supprimée, nous pouvons maintenant installer MySQL 8.0 :

$ yum install mysql-community-server

Cela ajoutera le dernier serveur MySQL 8.0, le client, les bibliothèques communes et les outils.

Lorsque l’installation est terminée, MySQL 8.0 est maintenant en place mais pas encore entièrement configuré.

Étape 5 – Démarrer MySQL 8.0 et exécuter mysql_upgrade

Les étapes suivantes consistent à démarrer MySQL 8.0 et à exécuter mysql_upgrade pour apporter les modifications nécessaires à la nouvelle version.

Démarrer MySQL

Démarrez le nouveau service MySQL 8.0 :

$ systemctl start mysqld.service 

Vérifiez qu’il a bien démarré :

$ systemctl status mysqld.service

Le service devrait être en cours d’exécution et vous pouvez maintenant vous y connecter localement.

Exécuter mysql_upgrade

L’outil mysql_upgrade vérifiera vos bases de données et apportera les ajustements nécessaires, comme le changement du format du dictionnaire de données. Il s’agit d’une partie clé du processus de mise à niveau.

Connectez-vous à MySQL et exécutez-le :

$ mysql_upgrade -u root -p

Entrez votre mot de passe root lorsque vous y êtes invité. Cela parcourra toutes les mises à jour nécessaires à vos données pour la compatibilité avec 8.0.

Lorsqu’il a terminé, exécutez ceci pour vérifier que le dictionnaire de données est mis à jour :

mysql> SHOW VARIABLES LIKE 'dd_version';

Il devrait afficher une valeur comme ‘2’ Pour MySQL 8.0.

Vérifier le journal d’erreurs

Vérifiez le dernier journal d’erreurs MySQL à /var/log/mysqld.log pour détecter les problèmes signalés lors du démarrage ou de mysql_upgrade.

Résoudre les erreurs avant de continuer.

À ce stade, MySQL 8.0 devrait fonctionner avec succès.

Étape 6 – Mettre à jour les fichiers de configuration

Ensuite, nous devons mettre à jour les fichiers et paramètres de configuration pour MySQL 8.0.

Mettre à jour my.cnf

Le fichier my.cnf principal est probablement obsolète et ne contient pas les nouvelles options spécifiques à 8.0.

Créez une nouvelle version par défaut :

$ mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Cela générera un nouveau my.cnf sous /var/lib/mysql avec les paramètres par défaut de 8.0.

Copiez-le vers /etc en remplaçant l’ancien fichier :

$ cp /var/lib/mysql/my.cnf /etc/my.cnf

Ouvrez ce nouveau fichier /etc/my.cnf et réappliquez tous les paramètres personnalisés que vous aviez auparavant, tels que :

  • Paramètres de moteur et mémoire personnalisés
  • Paramètres de réplication
  • Toute autre personnalisation

Enregistrez le fichier mis à jour lorsque vous avez terminé.

Mettre à jour les paramètres AppArmor

Si vous utilisez la sécurité AppArmor, elle nécessite des paramètres mis à jour pour MySQL 8.0 :

$ aa-disable /etc/apparmor.d/usr.sbin.mysqld

Puis mettez-le à jour :

$ echo "alias /etc/apparmor.d/usr.sbin.mysqld -> /etc/apparmor.d/disable/" | tee -a /etc/apparmor.d/usr.sbin.mysqld

Cela désactive les anciennes règles AppArmor et utilisera les paramètres par défaut.

Redémarrer MySQL et valider la configuration

Redémarrez MySQL pour charger les nouveaux paramètres my.cnf :

$ systemctl restart mysqld.service

Vérifiez que les paramètres personnalisés ont été correctement appliqués :

mysql> SHOW VARIABLES; 

Vérifiez que votre mémoire, moteur de stockage et autres paramètres sont comme prévu.

Vérifiez également que :

mysql> SELECT @@global.innodb_default_row_format;

Affiche ‘dynamic’ qui est requis pour MySQL 8.0.

Ajustez davantage my.cnf si certains paramètres n’ont pas été correctement appliqués.

Étape 7 – Créer de nouveaux comptes utilisateur

Si vous aviez des comptes utilisateur personnalisés dans MySQL 5.7, ils devront être recréés dans 8.0.

Vérifiez la liste des utilisateurs que vous avez capturée précédemment, et recréez chaque compte en utilisant la nouvelle syntaxe CREATE USER :

# Créer un utilisateur d'application  
mysql> CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'password';
# Accorder les autorisations
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON myapp.* TO 'myapp'@'localhost';

Testez la connexion avec chaque utilisateur recréé pour valider que les autorisations fonctionnent.

Vous pouvez également forcer l’expiration du mot de passe avec :

mysql> ALTER USER 'user'@'host' PASSWORD EXPIRE; 

Cela obligera les utilisateurs à réinitialiser leur mot de passe lors de leur première connexion.

Étape 8 – Nettoyer l’ancienne installation

Une fois la mise à niveau terminée, nous pouvons supprimer les artefacts restants de l’ancienne installation MySQL 5.7 :

Supprimer les fichiers journaux

Effacez les anciens fichiers journaux de 5.7 :

$ rm /var/log/mysqld.log*

Supprimer les fichiers de configuration

Supprimez les anciens fichiers de configuration inutilisés de 5.7 :

$ rm /etc/my.cnf.d/*mysql57*

Supprimer les répertoires de données

Si vous ne réutilisez pas les répertoires de données existants, supprimez le répertoire de données 5.7 :

$ rm -rf /var/lib/mysql57  

Cela aide à éliminer toute confusion concernant plusieurs répertoires de données.

Redémarrer et surveiller MySQL

Redémarrez MySQL une dernière fois :

$ systemctl restart mysqld.service

Surveillez les journaux et les performances pendant un certain temps pour garantir un comportement stable.

La mise à niveau vers 8.0 est maintenant terminée !

Conclusion

La mise à niveau de MySQL 5.7 vers 8.0 implique une planification, une préparation et des tests minutieux. Les étapes clés sont :

  • Sauvegarder toutes les données et valider l’installation existante
  • Installer les nouveaux dépôts MySQL 8.0
  • Arrêter et supprimer les anciens packages 5.7
  • Installer les versions MySQL 8.0
  • Exécuter mysql_upgrade pour mettre à jour les bases de données système
  • Mettre à jour les fichiers de configuration comme my.cnf
  • Recréer les comptes utilisateurs et rererun tests
  • Nettoyer les artefacts et journaux de l’ancienne installation

Suivre ce processus de manière méthodique permet d’éviter les problèmes et d’assurer une transition en douceur vers la dernière version de MySQL. Des tests approfondis valident la compatibilité des applications avec les nouveaux comportements.

Votre infrastructure MySQL est maintenant mise à niveau avec les dernières fonctionnalités et améliorations de MySQL 8.0 !

Laisser un commentaire