5 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Scripts serveur MySQL et utilitaires . Configuration de MySQL ->Le processus d'extinction de MySQL . Sécurité générale du serveur . Règles de sécurité et droits d'accès au serveur MySQL . Gestion des comptes utilisateurs de MySQL . Prévention des désastres et restauration . Localisation MySQL et utilisation internationale . Les fichiers de log de MySQL . Faire fonctionner plusieurs serveurs MySQL sur la même machine . Cache de requêtes MySQL
|
5.3 Le processus d'extinction de MySQL Le processus d'extinction du serveur peut se résumer comme ceci :
- Le processus est activé
- Le serveur crée un thread d'extinction, si nécessaire
- Le serveur cesse d'accepter les nouvelles connexions
- Le serveur conclut les activités en cours
- Les moteurs de stockages se ferment
- Le serveur se termine
Voici une version plus détaillée de ce synopsis :
- Le processus est activéL'extinction du serveur peut être initiée par plusieurs méthodes. Par exemple,
un utilisateur avec le droit de
SHUTDOWN
peut exécuter la commande
'mysqladmin shutdown'
.
'mysqladmin'
peut être utilisée sur n'importe
quelle plate-forme supportée par MySQL. Les autres méthodes d'extinction spécifiques
aux systèmes d'exploitation existent aussi : le serveur s'éteind lorsqu'il reçoit
un signal
SIGTERM
sous Unix. Un serveur installé comme service Windows
s'éteind sur ordre du gestionnaire.
- Le serveur crée un thread d'extinction, si nécessaireEn fonction de l'origine de l'extinciton, le serveur peut lancer un thread
qui gèrera l'extinction. Si l'extinction a été demandée par un client,
un thread d'extinction est créé. Si l'extinction est le résultat d'un
signal
SIGTERM
, le thread signal pourra gérer l'extinction lui-même,
ou alors lancer un autre thread. SI le serveur essaie de créer un thread et ne
peut pas le faire (par exemple, plus de mémoire), il va émettre un message
qui apparaitra comme ceci dans les logs :
Error: Can't create thread to kill server
|
- Le serveur cesse d'accepter les nouvelles connexionsPour éviter de voir de nouvelles opérations se lancer, le serveur commence
par arrêter d'accepter les nouvelles connexions. Il fait cela en fermant
les connexions au réseau qui attendent les connexions : le port TCP/IP, la
socket Unix ou le Pipe Windows.
- Le serveur conclut les activités en coursPour chaque thread associé à une connexion réseau, la connexion est interrompue,
et le thread est marqué comme mort. Le thread s'arrête lorsqu'il remarque
qu'il a été tué. Les threads qui sont inactifs meurent rapidement. Les
threads qui traitent des requêtes vérifient périodiquement leur état, et
prennent plus de temps pour s'arrêter. Pour plus d'information sur la
fin des threads, voyez Syntaxe de
KILL
, en particulier à propos
des commandes
REPAIR TABLE
ou
OPTIMIZE TABLE
sur les tables
MyISAM
.
Pour les threads qui ont une transaction ouverte, la transaction est
annulée. Notez que si un thread modifie une table non-transactionnelle,
une opération comme un
UPDATE
multi-ligne ou un
INSERT
peuvent
laisser la table partiellement modifiée, car l'opération peut se terminer
avant sa fin logique.
Si le serveur est un serveur de réplication, les threads associés avec
les esclaves sont traités comme n'importe quel autre client. C'est à dire,
ils sont marqués comme terminés, et se termine à leur prochaine vérification
d'état.
Si le serveur est un esclave de réplication, le thread d'entre/sortie et
le thread SQL sont arrêtés avant que le thread client ne soit tué. Le thread
SQL est autorisé à terminer sa commande en cours (pour éviter des problèmes
de réplication), puis cesse. Si le thread SQL était au milieu d'une transaction,
elle sera annulée.
- Les moteurs de stockages se ferment
A ce stade, les cache de tables ont envoyés sur le disque, et toutes les
tables ouvertes sont fermées.
Chaque moteur de stockage effectue les opérations nécessaire pour fermer les
tables qu'il gère. Par exemple, MyISAM envoye les dernières écritures pour la table.
InnoDB vide ses buffers sur le disque, écrit le LSN courant dans l'espace de table,
et termine ses propres threads.
- Le serveur se termine
|