Mysql
 sql >> Base de données >  >> RDS >> Mysql

Définition des variables de configuration MySQL - MySQL 5.7 vs MySQL 8.0

Les variables de configuration MySQL sont un ensemble de variables système de serveur utilisées pour configurer le fonctionnement et le comportement du serveur. Dans cet article de blog, nous expliquerons les différences de gestion des variables de configuration entre MySQL 5.7 et MySQL 8.0.

Nous expliquerons trois manières différentes de définir les variables de configuration en fonction de votre cas d'utilisation. Les variables de configuration qui peuvent être définies au moment de l'exécution sont appelées variables dynamiques et celles qui nécessitent un redémarrage du serveur MySQL pour prendre effet sont appelées variables non dynamiques.

1 :Définir la configuration pour la durée de vie actuelle d'un serveur MySQL en cours d'exécution

La plupart des configurations MySQL sont de nature dynamique et peuvent être définies au moment de l'exécution à l'aide de la commande SET. Cela signifie que les modifications ne sont pas persistantes et seront perdues si le serveur MySQL redémarre. Ceci est utile pour tester le comportement de votre changement de configuration avant de le rendre permanent.

Pour MySQL 5.7 et 8.0, vous pouvez accomplir cela en utilisant la commande SET GLOBAL

Exemple :

mysql> set global max_connect_errors=10000;

2 :Définir et conserver le changement de configuration lors des redémarrages de MySQL

Une fois que vous êtes satisfait des paramètres de changement de configuration, vous souhaitez le rendre permanent.

Dans MySQL 5.7, vous devez procéder en 2 étapes :

  1. Définissez le paramètre de configuration de l'exécution à l'aide de la commande SET GLOBAL
mysql> set global max_connect_errors=10000;
  1. Enregistrez cette modification dans votre fichier my.cnf en mettant à jour l'entrée existante pour max_connect_errors ou en en ajoutant une nouvelle.

Cela est devenu beaucoup plus facile dans MySQL 8.0. Vous pouvez le faire en une seule étape en utilisant la commande SET PERSIST

mysql> set persist max_connect_errors=10000;
Comment définir des variables de configuration - MySQL 5.7 vs MySQL 8.0Click To Tweet

Cela définira la valeur d'exécution de la configuration et conservera également la modification en l'enregistrant dans le fichier mysqld-auto.cnf qui existe dans le répertoire de données. Il s'agit d'un fichier JSON et vous verrez maintenant les entrées suivantes dans le fichier.

{

"Version": 1,

"mysql_server": {

"max_connect_errors": {

"Value": "10000",

"Metadata": {

"Timestamp": 1581135119397374,

"User": "sgroot",

"Host": "localhost"

}

}

}

}

Remarque : Les paramètres de configuration présents dans mysqld-auto.cnf remplacent toujours les valeurs présentes dans le fichier my.cnf. Ainsi, toute autre modification que vous apportez dans le fichier my.cnf pour la variable "max_connect_errors" ne prend pas effet. Cela peut être déroutant pour ceux qui passent de MySQL 5.7 car ils peuvent être habitués à stocker tous leurs paramètres dans my.cnf

3 :Définir des variables de configuration qui ne sont pas dynamiques

Certaines des variables de configuration ne peuvent pas être définies au moment de l'exécution et nécessiteraient un redémarrage de MySQL pour prendre effet.

Dans MySQL 5.7, vous devez créer une entrée pour ces variables dans votre fichier my.cnf et redémarrer le serveur MySQL pour que cela prenne effet. Un exemple pour une telle variable est innodb_log_file_size.

Dans MySQL 8.0, vous pouvez exécuter une commande appelée SET PERSIST ONLY qui créera une entrée dans mysqld-auto.cnf.

Exemple :

mysql> set persist_only innodb_log_file_size=134217728;

Il est également possible de redémarrer le serveur MySQL depuis la ligne de commande à l'aide de la commande RESTART. Cela entraînera l'application de la valeur modifiée de innodb_log_file_size.

Remarque : La commande RESTART ne fonctionne que si MySQL est géré à l'aide de programmes externes tels que systemd ou mysqld_safe. Veuillez voir plus de détails à ce sujet ici.

Sinon, la commande RESTART échoue avec un message comme celui-ci.

mysql> RESTART;

ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

Gestion de la configuration MySQL sur plusieurs serveurs

La gestion de la configuration de MySQL dans des environnements source-réplica est un processus fastidieux si vous devez gérer plusieurs clusters qui exécutent différentes versions de MySQL. C'est là qu'une solution gérée comme ScaleGrid serait bénéfique.

La console d'interface utilisateur ScaleGrid peut être utilisée pour examiner les paramètres actuels de diverses variables de configuration ou définir leurs valeurs.

ScaleGrid peut reconnaître quand un paramètre de configuration est non dynamique et avertira l'utilisateur si un redémarrage de MySQL est nécessaire pour que la valeur prenne effet. ScaleGrid effectuera également une sauvegarde du fichier my.cnf actuel avant d'appliquer toute nouvelle modification de configuration.

Dans les environnements source-réplica, ScaleGrid modifie les paramètres de configuration de manière continue, un serveur à la fois. Si une variable non dynamique doit être définie, ScaleGrid effectue un basculement du maître actuel pour minimiser le temps d'arrêt impliqué si MySQL doit être redémarré autrement.

Visitez le lien ci-dessous pour en savoir plus sur les différentes fonctionnalités de la solution d'hébergement ScaleGrid MySQL.