1. Initier l'arrêt et envoyer le signal SIGTERM
2. Si nécessaire, créez un nouveau thread d'arrêt
Si l'arrêt est initié par le client, un thread d'arrêt dédié sera créé
S'il est reçu directement Si le SIGTERM le signal est désactivé, un thread spécifiquement responsable du traitement du signal sera responsable du travail d'arrêt, ou un nouveau thread indépendant sera créé pour prendre en charge cette question
Lorsqu'un thread d'arrêt indépendant ne peut pas être créé (par exemple exemple, mémoire insuffisante), le serveur MySQL émettra un message d'avertissement similaire au suivant :
Erreur : Impossible de créer un thread pour tuer le serveur
3. ne répond plus aux nouvelles demandes de connexion
Fermez la surveillance du réseau TCP/IP, fermez Unix Socket et les autres canaux
4. et les transactions
Les connexions inactives seront immédiatement interrompues
Les connexions qui ont actuellement des transactions et des activités SQL seront marquées comme supprimées et leur statut sera vérifié régulièrement afin que ils peuvent être fermés lors du prochain contrôle ; (Se référer à la syntaxe KILL)
S'il y a actuellement une transaction active, la transaction sera annulée. Si des tables non transactionnelles sont également modifiées dans la transaction, la transaction est modifiée. les données ne peuvent pas être annulées et seule une partie des modifications peut être effectuée
S'il s'agit du maître dans le scénario de réplication maître/esclave, le traitement du thread de réplication est le même que celui du thread ordinaire. ;
S'il s'agit de l'esclave dans le scénario de réplication Maître/Esclave, il fermera tour à tour les threads IO et SQL. Si ces deux threads sont actuellement actifs, ils seront également marqués comme tués puis fermés ;
Sur le serveur Slave, le thread SQL est autorisé à arrêter directement l'opération SQL en cours (pour éviter les problèmes de réplication), puis à fermer le thread
Dans MySQL 5.0.80 et versions antérieures ; versions, si le thread SQL exécute une transaction au milieu, la transaction sera annulée ; à partir de 5.0, à partir de 81, il attendra la fin de toutes les opérations à moins que l'utilisateur ne lance une opération KILL.
Lorsque le thread SQL de l'esclave est forcé de KILL lors de l'exécution d'opérations sur des tables non transactionnelles, cela peut provoquer une incohérence dans les données du maître et de l'esclave
5. Le processus du serveur est arrêté Tous les threads, fermez tous les moteurs de stockage ;
Actualisez tous les caches de tables, fermez toutes les tables ouvertes
Chaque moteur de stockage est responsable des opérations d'arrêt associées ; , comme MyISAM Toutes les opérations en attente d'écriture seront vidées ; InnoDB videra le pool de tampons sur le disque (à partir de MySQL 5.0.5, si innodb_fast_shutdown n'est pas défini sur 2), enregistrera le LSN actuel dans l'espace table, puis fermez tous les fils internes.
6. Le processus du serveur MySQL se termine
À partir de la version 5.0, KILL prend en charge la spécification de deux CONNECTION | QUERY Options facultatives :
KILL CONNECTION est le même que celui d'origine, arrête d'annuler la transaction, ferme la connexion au fil de discussion et libère les ressources associées
8. Lorsque la table MyISAM est KILLée lors de l'exécution de REPAIR TABLE ou OPTIMIZE TABLE, cela entraînera ceci. La table est endommagée et indisponible, et le guide sera utilisé pour la réparer à nouveau.
Quelques suggestions pour arrêter MySQL en toute sécurité
0. Utilisez un compte avec la plus haute autorité tel que SUPER et ALL pour vous connecter à MySQL, de préférence en utilisant le socket unix
1. ci-dessus, définissez innodb_fast_shutdown = 1 , permettant à InnoDB d'être arrêté rapidement (sans purge complète, insertion de fusion de tampon), s'il s'agit de mettre à niveau ou de rétrograder la version de MySQL, ne le définissez pas
3. Définissez max_connections et max_user_connections sur 1, ce qui signifie qu'en fin de compte, aucune nouvelle connexion n'est autorisée à être créée à l'exception de votre connexion actuelle
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!