Mise à niveau du moteur de base de données MySQL - Amazon Relational Database Service

Mise à niveau du moteur de base de données MySQL

Lorsque Amazon RDS prend en charge une nouvelle version d'un moteur de base de données, vous pouvez mettre à niveau vos instances de base de données vers cette nouvelle version. Il existe deux types de mises à niveau pour les instances de base de données MySQL : les mises à niveau de version majeure et les mises à niveau de version mineure.

Les mises à niveau de version majeure peuvent contenir des modifications de base de données qui ne sont pas rétrocompatibles avec les applications existantes. En conséquence, vous devez effectuer manuellement les mises à niveau de version majeure de vos instances de base de données. Vous pouvez lancer une mise à niveau de version majeure en modifiant votre instance de base de données. Cependant, avant d'effectuer une mise à niveau de version majeure, nous vous recommandons de suivre les instructions décrites dans Mises à niveau de version majeure pour MySQL.

En revanche, une mise à niveau de version mineure contient uniquement des modifications rétrocompatibles avec les applications existantes. Vous pouvez lancer manuellement une mise à niveau de version mineure en modifiant votre instance de base de données. Vous pouvez également activer l'option Mise à niveau automatique des versions mineures lorsque vous créez ou modifiez une instance de base de données. Dans ce cas, votre instance de base de données est automatiquement mise à niveau une fois que Amazon RDS a testé et approuvé la nouvelle version. Pour de plus amples informations sur la mise à niveau, veuillez consulter Mise à niveau d'une version du moteur d'une instance de base de données .

Si votre instance de base de données MySQL utilise des réplicas en lecture, vous devez mettre à niveau tous les réplicas en lecture avant de mettre à niveau l'instance source. Si votre instance de base de données se trouve dans un déploiement Multi-AZ, les deux réplicas, principal et de secours, sont mis à niveau. Votre instance de base de données n'est pas disponible tant que la mise à niveau n'est pas terminée.

Note

Les mises à niveau du moteur de base de données nécessitent un temps d'arrêt. La durée du temps d'arrêt varie en fonction de la taille de votre instance de base de données.

Présentation de la mise à niveau

Lorsque vous utilisez AWS Management Console pour mettre à niveau une instance de base de données, les cibles de mise à niveau valides pour l'instance de base de données sont affichées. Vous pouvez également utiliser la commande AWS CLI suivante pour identifier les cibles de mise à niveau valides pour une instance de base de données :

Pour Linux, macOS ou Unix :

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Pour Windows :

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Par exemple, pour identifier les cibles de mise à niveau valides pour une instance de base de données MySQL version 5.6.43, exécutez la commande AWS CLI suivante :

Pour Linux, macOS ou Unix :

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 5.6.43 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Pour Windows :

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 5.6.43 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Amazon RDS prend deux instantanés de base de données au cours du processus de mise à niveau. Le premier instantané de base de données porte sur l'instance de base de données avant que toute modification de mise à niveau soit apportée. Si la mise à niveau ne fonctionne pas pour vos bases de données, vous pouvez restaurer cet instantané pour créer une instance de base de données exécutant l'ancienne version. Le second instantané de base de données est pris à la fin de la mise à niveau.

Note

Amazon RDS ne prend des instantanés de base de données que si vous avez défini la période de rétention des sauvegardes de votre instance de base de données sur un nombre supérieur à 0. Pour modifier la période de rétention des sauvegardes, consultez Modification d'une instance de base de données Amazon RDS.

Une fois la mise à niveau terminée, vous ne pouvez pas rétablir la version précédente du moteur de base de données. Si vous souhaitez revenir à la version précédente, restaurez le premier instantané de base de données pris pour créer une nouvelle instance de base de données.

Vous contrôlez à quel moment vous mettez à niveau votre instance de base de données vers une nouvelle version prise en charge par Amazon RDS. Ce niveau de contrôle vous aide à maintenir la compatibilité avec des versions de base de données spécifiques et à tester les nouvelles versions avec votre application avant un déploiement en production. Lorsque vous êtes prêt, vous pouvez effectuer des mises à niveau de version aux moments qui conviennent le mieux à votre planning.

Si votre instance DB utilise la réplication en lecture, vous devez mettre à niveau tous les réplicas en lecture avant de mettre à niveau l'instance source.

Si votre instance de base de données se trouve dans un déploiement multi-AZ, les deux instances de base de données principale et de secours sont mises à niveau. Les instances de base de données principales et de secours sont mises à niveau en même temps, et vous êtes confronté à une panne jusqu'à ce que la mise à niveau soit terminée. La durée de la panne varie selon votre moteur de base de données, la version du moteur et la taille de votre instance de base de données.

Mises à niveau de version majeure pour MySQL

Amazon RDS prend en charge les mises à niveau sur place des versions majeures suivantes du moteur de base de données MySQL :

  • MySQL 5.6 vers MySQL 5.7

  • MySQL 5.7 vers MySQL 8.0

Note

Vous pouvez uniquement créer des instances de base de données MySQL version 5.7 et 8.0 avec les classes d'instance de base de données de la génération actuelle et de la dernière génération, en plus de la classe d'instance de base de données de la génération précédente db.m3.

Dans certains cas, vous souhaiterez mettre à niveau une instance de base de données MySQL version 5.6 en cours d'exécution sur une classe d'instance de base de données de génération précédente (autre que db.m3) vers une instance de base de données MySQL version 5.7. Dans ce cas, commencez par modifier l'instance de base de données afin d'utiliser une classe d'instance de base de données de génération actuelle ou de dernière génération. Ensuite, vous pouvez modifier l'instance de base de données pour utiliser le moteur de base de données MySQL version 5.7. Pour de plus amples informations sur les classes d'instance de base de données Amazon RDS, veuillez consulter Classes d'instances de base de données.

Le 1er février 2022, Amazon RDS prévoit de rendre obsolète le support pour MySQL 5.6. Les mises à niveau automatiques d'instances de base de données MySQL 5.6 vers MySQL 5.7 commenceront le 1er mars 2022. Pour plus d'informations, consultez Obsolescence de MySQL version 5.6.

Présentation des mises à niveau de version majeure MySQL

Les mises à niveau de version majeure peuvent contenir des modifications de base de données qui ne sont pas rétrocompatibles avec les applications existantes. En conséquence, Amazon RDS n'applique pas automatiquement les mises à niveau de version majeure. Vous devez modifier manuellement votre instance de base de données. Nous vous recommandons de tester soigneusement toute mise à niveau avant de l'appliquer à vos instances de production.

Pour effectuer une mise à niveau de version majeure d'une instance de base de données MySQL version 5.6 sur Amazon RDS vers MySQL version 5.7 ou ultérieure, commencez par effectuer toutes les mises à jour disponibles du système d'exploitation. Une fois les mises à jour du système d'exploitation terminées, mettez à niveau vers chaque version majeure : 5.6 vers 5.7, puis 5.7 vers 8.0. Les instances de base de données MySQL créées avant le 24 avril 2014 affichent une mise à jour de système d'exploitation disponible jusqu'à ce que celle-ci soit appliquée. Pour de plus amples informations sur les mises à jour du système d'exploitation, veuillez consulter Application de mises à jour pour un(e) instance de base de données.

Au cours d'une mise à niveau de version majeure de MySQL, Amazon RDS exécute le fichier binaire MySQL mysql_upgrade pour mettre à niveau les tables, si nécessaire. Amazon RDS vide également les tables slow_log et general_log pendant une mise à niveau de version majeure. Pour conserver les informations de journal, enregistrez le contenu du journal avant la mise à niveau de version majeure.

Les mises à niveau des versions majeures de MySQL durent généralement environ 10 minutes. Certaines mises à niveau peuvent durer plus longtemps en raison de la taille de la classe d'instance de base de données ou parce que l'instance ne suit pas certaines directives opérationnelles indiquées dans Bonnes pratiques relatives à Amazon RDS.. Si vous effectuez une mise à niveau d'une instance de base de données à partir de la console Amazon RDS, le statut de l'instance de base de données indique quand la mise niveau est terminée. Si vous effectuez une mise à niveau à l'aide de l'AWS Command Line Interface (AWS CLI), utilisez la commande describe-db-instances et vérifiez la valeur de Status.

Les mises à niveau vers MySQL version 5.7 peuvent être lentes

MySQL version 5.6.4 a introduit un nouveau format de date et d'heure pour les colonnes datetime, time et timestamp, qui autorise les expressions fractionnaires dans les valeurs de date et d'heure. Lors de la mise à niveau d'une instance de base de données vers MySQL version 5.7, MySQL force la conversion de tous les types de colonne de date et d'heure dans le nouveau format.

Étant donné que cette conversion recrée vos tables, cela peut prendre beaucoup de temps pour terminer la mise à niveau de l'instance de base de données. La conversion forcée se produit pour toutes les instances de base de données qui exécutent une version MySQL antérieure à la version 5.6.4. Elle se produit également pour les instances de base de données qui ont été mises à niveau à partir d'une version de MySQL antérieure à la version 5.6.4 vers une version autre que 5.7.

Si votre instance de base de données exécute une version de MySQL antérieure à la version 5.6.4 ou a été mise à niveau à partir d'une version antérieure à la version 5.6.4, nous recommandons d'effectuer une étape supplémentaire. Dans ce cas, nous vous recommandons de convertir les colonnes datetime, time et timestamp de votre base de données avant de mettre à niveau votre instance de base de données vers MySQL version 5.7. Cette conversion peut considérablement réduire le temps nécessaire pour mettre à niveau l'instance de base de données vers MySQL version 5.7. Pour mettre à niveau les colonnes de date et d'heure vers le nouveau format, vous devez émettre la commande ALTER TABLE <table_name> FORCE; pour chaque table qui contient des colonnes de date ou d'heure. Comme la modification d'une table la verrouille en lecture seule, il est recommandé d'effectuer cette mise à jour pendant une fenêtre de maintenance.

Pour trouver toutes les tables de votre base de données qui comportent des colonnes datetime, time ou timestamp, et créer une commande ALTER TABLE <table_name> FORCE; pour chaque table, utilisez la requête suivante.

SELECT DISTINCT CONCAT('ALTER TABLE `', REPLACE(is_tables.TABLE_SCHEMA, '`', '``'), '`.`', REPLACE(is_tables.TABLE_NAME, '`', '``'), '` FORCE;') FROM information_schema.TABLES is_tables INNER JOIN information_schema.COLUMNS col ON col.TABLE_SCHEMA = is_tables.TABLE_SCHEMA AND col.TABLE_NAME = is_tables.TABLE_NAME LEFT OUTER JOIN information_schema.INNODB_SYS_TABLES systables ON SUBSTRING_INDEX(systables.NAME, '#', 1) = CONCAT(is_tables.TABLE_SCHEMA,'/',is_tables.TABLE_NAME) LEFT OUTER JOIN information_schema.INNODB_SYS_COLUMNS syscolumns ON syscolumns.TABLE_ID = systables.TABLE_ID AND syscolumns.NAME = col.COLUMN_NAME WHERE col.COLUMN_TYPE IN ('time','timestamp','datetime') AND is_tables.TABLE_TYPE = 'BASE TABLE' AND is_tables.TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema') AND (is_tables.ENGINE = 'InnoDB' AND syscolumns.MTYPE = 6);

Vérifications préalables aux mises à jour de MySQL 5.7 vers 8.0

MySQL 8.0 inclut plusieurs incompatibilités avec MySQL 5.7. Ces incompatibilités peuvent provoquer des problèmes lors d'une mise à niveau de MySQL 5.7 vers MySQL 8.0. Une certaine préparation est donc nécessaire sur votre base de données pour garantir la réussite de la mise à niveau. La liste suivante est une liste généralisée de ces incompatibilités :

  • Les tables ne doivent pas utiliser de fonctions ou de types de données obsolètes.

  • Il ne doit y avoir aucun fichier *.frm orphelin.

  • Les déclencheurs ne doivent pas avoir de definer manquant ou vide, ni de contexte de création invalide.

  • Aucune table partitionnée ne doit utiliser de moteur de stockage dépourvu de prise en charge native du partitionnement.

  • Il ne doit y avoir aucune violation de mot clé ou de mot réservé. Certains mots clés doivent être réservés dans MySQL 8.0 alors qu'ils ne l'étaient pas par le passé.

    Pour en savoir plus, consultez Mots clés et mots réservés dans la documentation MySQL.

  • Aucune table de la base de données du système mysqldans MySQL 5.7 ne doit avoir le même nom que la table utilisée dans le dictionnaire de données MySQL 8.0.

  • Aucun mode SQL obsolète ne doit être défini dans la configuration variable de votre système sql_mode.

  • Aucune table ni procédure stockée avec des éléments de colonne ENUM ou SET individuels ne doit dépasser 255 caractères ou 1 020 octets de longueur.

  • Avant de mettre à niveau vers la version MySQL 8.0.13 ou une version ultérieure, aucune partition de table ne doit se trouver dans les espaces de stockage InnoDB partagés.

  • Aucune requête ni définition de programme de la version MySQL 8.0.12 ou d’une version antérieure ne doit utiliser de qualificateur ASC ou DESC pour les clauses GROUP BY.

  • Votre installation MySQL ne doit pas utiliser de fonctionnalités incompatibles avec MySQL 8.0.

    Pour en savoir plus, consultez Fonctionnalités supprimées dans MySQL 8.0 dans la documentation MySQL.

  • Aucun nom de contrainte de clé étrangère ne doit dépasser 64 caractères.

  • Pour une meilleure prise en charge d’Unicode, envisagez de convertir les objets qui utilisent le jeu de caractères utf8mb3 pour utiliser le jeu de caractères utf8mb4. Le jeu de caractères utf8mb3 est obsolète. Envisagez également d'utiliser utf8mb4 pour référencer les jeux de caractères au lieu de utf8. Actuellement, utf8 est un alias du jeu de caractères utf8mb3.

    Pour en savoir plus, consultez Le jeu de caractères utf8mb3 (encodage Unicode 3 octets en UTF-8) dans la documentation MySQL.

Lorsque vous démarrez une mise à niveau de MySQL 5.7 vers 8.0, Amazon RDS exécute automatiquement des vérifications préalables pour détecter ces incompatibilités. Pour plus d’informations sur la mise à niveau vers MySQL 8.0, consultez Mise à niveau de MySQL dans la documentation MySQL.

Ces vérifications préalables sont obligatoires. Vous ne pouvez pas choisir de les ignorer. Elles offrent les avantages suivants :

  • Elles vous permettent d'éviter les temps d'arrêts non planifiés pendant la mise à niveau.

  • Si vous avez des incompatibilités, Amazon RDS empêche la mise à niveau et vous fournit un journal pour que vous en sachiez plus à leur sujet. Vous pouvez ensuite utiliser le journal pour préparer votre base de données pour la mise à niveau vers la version 8.0 de MySQL en éliminant ces incompatibilités. Pour plus d'informations sur la suppression des incompatibilités, voir Préparation de votre installation pour la mise à niveau dans la documentation MySQL et Mise à niveau vers MySQL 8.0 ? voici ce que vous devez savoir... sur le blog MySQL Server.

Certaines vérifications préalables sont incluses avec MySQL et d'autres ont été spécifiquement créées par l'équipe Amazon RDS. Pour de plus amples informations sur les vérifications préalables fournies par MySQL, veuillez consulter Upgrade Checker Utility.

Les vérifications préalables s'exécutent avant que l'instance de base de données soit arrêtée pour la mise à niveau, ce qui signifie que leur exécution n'entraîne aucun temps d'arrêt. Si les vérifications préalables trouvent une incompatibilité, Amazon RDS annule automatiquement la mise à niveau avant que l'instance de base de données soit arrêtée. Amazon RDS génère également un événement pour l'incompatibilité. Pour de plus amples informations sur les événements Amazon RDS, veuillez consulte Utilisation de la notification d'événement Amazon RDS.

Amazon RDS enregistre des informations détaillées sur chaque incompatibilité dans le fichier journal PrePatchCompatibility.log. Dans la plupart des cas, l'entrée de journal inclut un lien vers la documentation MySQL permettant de corriger l'incompatibilité. Pour de plus amples informations sur l'affichage des fichiers journaux, veuillez consulter Liste et affichage des fichiers journaux de base de données.

En raison de la nature des vérifications préalables, elle analysent les objets dans votre base de données. L’analyse entraîne la consommation de ressources et augmente le temps nécessaire pour la mise à niveau.

Note

Amazon RDS n'exécute ces vérifications préalables que pour une mise à niveau de MySQL 5.7 vers MySQL 8.0. Pour une mise à niveau de MySQL 5.6 vers MySQL 5.7, les vérifications préalables se limitent à confirmer qu'il n'y a pas de tables orphelines et qu'il y a suffisamment d'espace de stockage pour reconstruire les tables. Elles ne sont pas exécutées pour les mises à niveau vers une version antérieure à MySQL 5.7.

Restauration après l'échec de la mise à niveau de MySQL 5.7 vers 8.0

Lorsque vous mettez à niveau une instance de base de données de MySQL version 5.7 vers MySQL version 8.0, la mise à niveau peut échouer. Elle peut échouer en particulier si le dictionnaire de données contient des incompatibilités qui n'ont pas été détectées alors des vérifications préalables. Dans ce cas, la base de données ne parvient pas à démarrer dans la nouvelle version de MySQL 8.0. À ce stade, Amazon RDS annule les modifications effectuées pour la mise à niveau. Après la restauration, l'instance de base de données MySQL exécute MySQL version 5.7. Lorsqu'une mise à niveau échoue et qu'elle est annulée, Amazon RDS génère un événement avec l'ID RDS-EVENT-0188.

Généralement, une mise à niveau échoue car il existe des incompatibilités dans les métadonnées entre les bases de données de votre instance de base de données et la version MySQL cible. En cas d'échec d'une mise à niveau, vous pouvez afficher les détails de ces incompatibilités dans le fichier upgradeFailure.log. Vous devez résoudre les incompatibilités avant de répéter la tentative de mise à niveau.

Lors d'une tentative de mise à niveau infructueuse et d'une restauration, votre instance de base de données est redémarrée. Tous les changements de paramètres en attente sont appliqués lors du redémarrage et sont maintenus après la restauration.

Pour plus d'informations sur la mise à niveau vers MySQL 8.0, consultez les rubriques suivantes de la documentation MySQL :

Note

Actuellement, la restauration automatique après l'échec de la mise à niveau est prise en charge uniquement pour les mises à niveau majeures de MySQL 5.7 vers 8.0.

Test d'une mise à niveau

Avant d'effectuer une mise à niveau de version majeure sur votre instance de base de données, testez soigneusement la compatibilité de votre base de données avec la nouvelle version. En outre, vous devez tester soigneusement la compatibilité de toutes les applications qui accèdent à la base de données avec la nouvelle version. Nous vous recommandons d'utiliser la procédure suivante.

Pour tester une mise à niveau de version majeure

  1. Passez en revue la documentation de la mise à niveau pour la nouvelle version du moteur de base de données afin de voir si des problèmes de compatibilité peuvent affecter votre base de données ou vos applications :

  2. Si votre instance de base de données est membre d'un groupe de paramètres de base de données personnalisé, créez un nouveau groupe de paramètres de base de données avec vos paramètres existants, qui soit compatible avec la nouvelle version majeure. Spécifiez le nouveau groupe de paramètres de base de données lorsque vous mettez à niveau votre instance de test afin que les tests de mise à niveau puissent vérifier son bon fonctionnement. Pour de plus amples informations sur la création d'un groupe de paramètres de base de données, veuillez consulter Utilisation de groupes de paramètres de base de données.

  3. Créez un instantané de base de données de l'instance de base de données à mettre à niveau. Pour plus d'informations, consultez Création d'un instantané de base de données.

  4. Restaurez l'instantané de base de données pour créer une nouvelle instance de base de données de test. Pour plus d'informations, consultez Restauration à partir d'un instantané de de base de données.

  5. Modifiez cette nouvelle instance de base de données de test pour la mettre à niveau vers la nouvelle version, en utilisant l'une des méthodes détaillées plus loin. Si vous avez créé un groupe de paramètres à l'étape 2, spécifiez ce groupe de paramètres.

  6. Évaluez le stockage utilisé par l'instance mise à niveau pour déterminer si la mise à niveau requiert un stockage supplémentaire.

  7. Exécutez sur l'instance de base de données mise à niveau autant de tests d'assurance qualité que nécessaire pour garantir que votre base de données et votre application fonctionnent correctement avec la nouvelle version. Implémentez tous les nouveaux tests requis pour évaluer l'impact des éventuels problèmes de compatibilité que vous avez identifiés à l'étape 1. Testez toutes les fonctions et procédures stockées. Dirigez les versions de test de vos applications vers l'instance de base de données mise à niveau.

  8. En cas de succès de tous les tests, effectuez la mise à niveau sur votre instance de base de données de production. Nous vous recommandons de ne pas autoriser les opérations d'écriture sur l'instance de base de données tant que vous n'avez pas confirmé que tout fonctionne correctement.

Mise à niveau d'une instance de base de données MySQL

Pour de plus amples informations sur la mise à niveau manuelle ou automatique d'une instance de base de données MySQL, veuillez consulter Mise à niveau d'une version du moteur d'une instance de base de données .

Mises à niveau automatiques des versions mineures pour MySQL

Si vous spécifiez les paramètres suivants lors de la création ou de la modification d'une instance de base de données, celle-ci peut être mise à niveau automatiquement.

  • Le paramètre Mise à niveau automatique des versions mineures est activé.

  • Le paramètre Période de conservation des sauvegardes est supérieur à 0.

Pour plus d'informations sur ces paramètres, consultez la page Paramètres des instances de base de données.

Pour certaines versions majeures de RDS pour MySQL dans certaines régions AWS, RDS désigne une version mineure comme version de mise à niveau automatique. Une fois qu'une version mineure a été testée et approuvée par Amazon RDS, la mise à niveau de la version mineure se produit automatiquement pendant votre fenêtre de maintenance. RDS ne définit pas automatiquement les dernières versions mineures publiées comme version de mise à niveau automatique. Avant de désigner une publication de version récente comme version de mise à niveau automatique, RDS prend en compte plusieurs critères, à savoir :

  • Problèmes de sécurité connus

  • Bogues dans la version de la communauté MySQL

  • Stabilité globale du parc depuis la publication de la version mineure

Vous pouvez utiliser la commande AWS CLI et le script suivants pour déterminer la version cible de mise à niveau mineure automatique actuelle pour une version mineure MySQL spécifiée dans une région AWS spécifique.

aws rds describe-db-engine-versions --output=table --engine mysql --engine-version minor-version --region region

Par exemple, la commande AWS CLI suivante détermine la cible de mise à niveau mineure automatique pour MySQL version mineure 5.7.19 dans la région AWS USA Est (Ohio) (us-east-2).

aws rds describe-db-engine-versions --output=table --engine mysql --engine-version 5.7.19 --region us-east-2

Votre sortie est similaire à ce qui suit.

----------------------------------------------------------------------------------------- | DescribeDBEngineVersions | +---------------------------------------------------------------------------------------+ || DBEngineVersions || |+-------------------------------------------------+-----------------------------------+| || DBEngineDescription | MySQL Community Edition || || DBEngineVersionDescription | mysql 5.7.19 || || DBParameterGroupFamily | mysql5.7 || || Engine | mysql || || EngineVersion | 5.7.19 || || Status | available || || SupportsGlobalDatabases | False || || SupportsLogExportsToCloudwatchLogs | True || || SupportsParallelQuery | False || || SupportsReadReplica | True || |+-------------------------------------------------+-----------------------------------+| ||| ExportableLogTypes ||| ||+-----------------------------------------------------------------------------------+|| ||| audit ||| ||| error ||| ||| general ||| ||| slowquery ||| ||+-----------------------------------------------------------------------------------+|| ||| ValidUpgradeTarget ||| ||+-------------+---------------+---------+----------------+--------------------------+|| ||| AutoUpgrade | Description | Engine | EngineVersion | IsMajorVersionUpgrade ||| ||+-------------+---------------+---------+----------------+--------------------------+|| ||| False | MySQL 5.7.21 | mysql | 5.7.21 | False ||| ||| False | MySQL 5.7.22 | mysql | 5.7.22 | False ||| ||| False | | mysql | 5.7.23 | False ||| ||| False | MySQL 5.7.24 | mysql | 5.7.24 | False ||| ||| False | MySQL 5.7.25 | mysql | 5.7.25 | False ||| ||| True | MySQL 5.7.26 | mysql | 5.7.26 | False ||| ||| False | MySQL 5.7.28 | mysql | 5.7.28 | False ||| ||| False | MySQL 5.7.30 | mysql | 5.7.30 | False ||| ||| False | MySQL 5.7.31 | mysql | 5.7.31 | False ||| ||| False | MySQL 8.0.11 | mysql | 8.0.11 | True ||| ||| False | MySQL 8.0.13 | mysql | 8.0.13 | True ||| ||| False | MySQL 8.0.15 | mysql | 8.0.15 | True ||| ||| False | MySQL 8.0.16 | mysql | 8.0.16 | True ||| ||| False | MySQL 8.0.17 | mysql | 8.0.17 | True ||| ||| False | MySQL 8.0.19 | mysql | 8.0.19 | True ||| ||| False | MySQL 8.0.20 | mysql | 8.0.20 | True ||| ||| False | MySQL 8.0.21 | mysql | 8.0.21 | True ||| ||+-------------+---------------+---------+----------------+--------------------------+||

Dans cet exemple, la valeur de AutoUpgrade est True pour MySQL version 5.7.26. Ainsi, la cible de mise à niveau mineure automatique est MySQL version 5.7.26, comme mis en évidence dans la sortie.

Une instance de base de données MySQL est automatiquement mise à niveau pendant votre fenêtre de maintenance si les critères suivants sont réunis :

  • Le paramètre Mise à niveau automatique des versions mineures est activé.

  • Le paramètre Période de conservation des sauvegardes est supérieur à 0.

  • L'instance de base de données exécute une version mineure du moteur de base de données qui est inférieure à la version mineure de la mise à niveau automatique actuelle.

Pour plus d'informations, consultez Mise à niveau automatique de la version mineure du moteur.

Utilisation d'un réplica en lecture pour réduire les temps d'arrêt lors de la mise à niveau d'une base de données MySQL

Si votre instance de base de données MySQL est en cours d'utilisation avec une application de production, vous pouvez utiliser la procédure suivante pour mettre à niveau la version de la base de données pour votre instance de base de données. Cette procédure peut réduire les temps d'arrêt de votre application.

En utilisant un réplica en lecture, vous pouvez effectuer la plupart des étapes de maintenance à l'avance et ainsi réduire les modifications nécessaires lors d'une panne réelle. Cette technique vous permet de tester et de préparer la nouvelle instance de base de données sans apporter de modifications à votre instance de base de données existante.

La procédure suivante illustre un exemple de mise à niveau de MySQL version 5.7 vers MySQL version 8.0. Vous pouvez utiliser les mêmes étapes générales pour des mises à niveau vers d'autres versions majeures.

Note

Avant de procéder à une mise à niveau de MySQL version 5.7 vers MySQL version 8.0, quelques vérifications sont nécessaires. Pour plus d'informations, consultez Vérifications préalables aux mises à jour de MySQL 5.7 vers 8.0.

Pour mettre à niveau une base de données MySQL alors qu'une instance de base de données est en cours d'utilisation

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Créez un réplica en lecture de votre instance de base de données MySQL 5.7. Ce processus crée une copie pouvant être mise à niveau de votre base de données. D'autres réplicas en lecture de l'instance de base de données peuvent également exister.

    1. Sur la console, choisissez Bases de données, puis sélectionnez l'instance de base de données que vous souhaitez mettre à niveau.

    2. Sous Actions, choisissez Créer des réplicas en lecture.

    3. Spécifiez une valeur dans le champ Identifiant de l'instance de base de données de votre réplica en lecture et assurez-vous que la Classe d'instance de base de données et les autres paramètres correspondent à votre instance de base de données MySQL 5.7.

    4. Choisissez Créer un réplica en lecture.

  3. (Facultatif) Lorsque le réplica en lecture a été créé et que le champ État indique Disponible, convertissez le réplica en lecture en déploiement multi-AZ et activez les sauvegardes.

    Par défaut, un réplica en lecture est créé en tant que déploiement mono-AZ et les sauvegardes sont désactivées. Dans la mesure où le réplica en lecture finira par devenir l'instance de base de données de production, nous vous recommandons de configurer un déploiement multi-AZ et d'activer les sauvegardes dès maintenant.

    1. Sur la console, choisissez Bases de données, puis sélectionnez le réplica en lecture que vous venez de créer.

    2. Sélectionnez Modify.

    3. Dans le champ Déploiement multi-AZ, choisissez Créer une instance de secours.

    4. Dans le champ Période de conservation des sauvegardes, choisissez une valeur positive différente de zéro (par exemple, 3 jours), puis sélectionnez Continuer.

    5. Pour Scheduling of Modifications (Planification des modifications), choisissez Appliquer immédiatement.

    6. Choisissez Modifier l'instance DB.

  4. Lorsque le champ État du réplica en lecture indique Disponible, procédez à sa mise à niveau vers MySQL 8.0 :

    1. Sur la console, choisissez Bases de données, puis sélectionnez le réplica en lecture que vous venez de créer.

    2. Sélectionnez Modify.

    3. Dans le champ Version du moteur de base de données, choisissez la version de MySQL 8.0 vers laquelle vous souhaitez effectuer la mise à niveau, puis sélectionnez Continuer.

    4. Pour Scheduling of Modifications (Planification des modifications), choisissez Appliquer immédiatement.

    5. Choisissez Modifier l'instance de base de données pour démarrer la mise à niveau.

  5. Lorsque la mise à niveau est terminée et que le champ État indique Disponible, vérifiez que le réplica en lecture mis à niveau est à jour avec l'instance de base de données MySQL 5.7 source. Pour cela, connectez-vous au réplica en lecture et exécutez la commande SHOW REPLICA STATUS. Si le champ Seconds_Behind_Master a pour valeur 0, la réplication est à jour.

    Note

    Les versions précédentes de MySQL utilisaient SHOW SLAVE STATUS à la place de SHOW REPLICA STATUS. Si vous utilisez une version MySQL antérieure à la version 8.0.23, utilisez alors SHOW SLAVE STATUS.

  6. (Facultatif) Créez un réplica en lecture de votre réplica en lecture.

    Si vous souhaitez que l'instance de base de données dispose d'un réplica en lecture une fois celle-ci promue en tant qu'instance de base de données autonome, vous pouvez créer le réplica en lecture dès maintenant.

    1. Sur la console, choisissez Bases de données, puis sélectionnez le réplica en lecture que vous venez de mettre à niveau.

    2. Sous Actions, choisissez Créer des réplicas en lecture.

    3. Spécifiez une valeur dans le champ Identifiant de l'instance de base de données de votre réplica en lecture et assurez-vous que la Classe d'instance de base de données et les autres paramètres correspondent à votre instance de base de données MySQL 5.7.

    4. Choisissez Créer un réplica en lecture.

  7. (Facultatif) Configurez un groupe de paramètres de base de données personnalisé pour le réplica en lecture.

    Si vous souhaitez que l'instance de base de données utilise un groupe de paramètres personnalisé une fois celle-ci promue en tant qu'instance de base de données autonome, vous pouvez créer le groupe de paramètres de base de données dès maintenant et l'associer au réplica en lecture.

    1. Créez un groupe de paramètres de base de données personnalisé pour MySQL 8.0. Pour obtenir des instructions, consultez Création d'un groupe de paramètres de bases de données.

    2. Modifiez les paramètres que vous souhaitez modifier dans le groupe de paramètres de base de données fraîchement créé. Pour obtenir des instructions, consultez Modification de paramètres dans un groupe de paramètres de bases de données.

    3. Sur la console, choisissez Bases de données, puis sélectionnez le réplica en lecture.

    4. Sélectionnez Modify.

    5. Dans le champ Groupe de paramètres de base de données, choisissez le groupe de paramètres de base de données MySQL 8.0 que vous venez de créer, puis sélectionnez Continuer.

    6. Pour Scheduling of Modifications (Planification des modifications), choisissez Appliquer immédiatement.

    7. Choisissez Modifier l'instance de base de données pour démarrer la mise à niveau.

  8. Faites de votre réplica en lecture MySQL 8.0 une instance de base de données autonome.

    Important

    Une fois promu en tant qu'instance de base de données autonome, votre réplica en lecture MySQL 8.0 cesse d'être un réplica de votre instance de base de données MySQL 5.7. Nous vous conseillons d'effectuer la promotion de votre réplica en lecture MySQL 8.0 au cours d'un créneau de maintenance, lorsque votre instance de base de données MySQL 5.7 source est en mode lecture seule et que toutes les opérations d'écriture sont suspendues. Au terme de l'opération de promotion, vous pouvez diriger vos opérations d'écriture vers l'instance de base de données MySQL 8.0 mise à niveau pour veiller à ce qu'aucune opération d'écriture ne se perde.

    En outre, avant la promotion de votre réplica en lecture MySQL 8.0, nous vous conseillons d'effectuer toutes les opérations DDL (Data Definition Language) nécessaires sur votre réplica en lecture MySQL 8.0. Par exemple, la création d'index. Cette approche permet d'éviter tout effet négatif sur les performances du réplica en lecture MySQL 8.0 après sa promotion. Pour promouvoir un réplica en lecture.

    1. Sur la console, choisissez Bases de données, puis sélectionnez le réplica en lecture que vous venez de mettre à niveau.

    2. Pour Actions, choisissez Promote (Promouvoir).

    3. Choisissez Oui pour activer les sauvegardes automatiques pour l'instance du réplica en lecture. Pour plus d'informations, consultez Utilisation des sauvegardes.

    4. Choisissez Continuer.

    5. Choisissez Promouvoir le réplica en lecture.

  9. Vous disposez à présent d'une version mise à niveau de votre base de données MySQL. À ce stade, vous pouvez diriger vos applications vers la nouvelle instance de base de données MySQL 8.0.