4.9 Les fichiers de log de MySQL
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Le log d'erreurs . Le log général de requêtes ->Le log de modification . Le log binaire de modifications . Le log des requêtes lentes . Entretien des fichiers de log
|
4.9.3 Le log de modification
Note
: le log de modifications a été remplacé par le log binaire.
Le log binaire des mises à jour . Avec ce nouveau log, vous pouvez faire tout ce que vous faisiez
avec le log de modifications.
Lors l'option
--log-update[=file_name]
est utilisée au démarrage,
mysqld
écrit un fichier de log contenant toutes les commandes
SQL qui modifie les données. Si aucun fichier n'est spécifié, il prendra
la valeur par défaut du nom de l'hôte. Si un fichier est spécifié mais qu'aucun
chemin n'est indiqué, le fichier sera écrit dans le dossier de données.
Si le fichier
file_name
n'a pas d'extension,
mysqld
va
créer un fichier de log avec ce nom :
file_name.###
, où
###
est un nombre qui s'incrémente à chaque
vois que vous exécutez la commande
mysqladmin refresh
,
mysqladmin flush-logs
,
FLUSH LOGS
ou que vous redémarrez le
serveur.
Note
: pour que la technique ci-dessus fonctionne, vous ne devez pas
créer de fichiers avec le nom du fichier de log + une extension, qui pourrait
être considérée comme un nombre, dans le dossier qui contient les
log de modifications.
Si vous utilisez les options
--log
ou
-l
,
mysqld
écrit un
log général avec le nom de
hostname.log
, et les redémarrage ou les
rafraîchissements de fichiers de logs ne généreront pas de nouveaux fichiers
(même si le fichier lui même est bien refermé, puis ouvert). Dans ce cas,
vous pouvez le copier sous Unix avec :
mv hostname.log hostname-old.log mysqladmin flush-logs cp hostname-old.log to-backup-directory rm hostname-old.log
|
Le fichier de log de modification est très utile, car il n'enregistre que les
commandes qui modifient les données. Ce qui fait qu'une commande
UPDATE
ou
DELETE
avec une requête
WHERE
qui ne trouve pas de lignes
ne seront pas écrites dans ce fichier. Il va même ignorer les requêtes
UPDATE
qui modifie une colonne avec la valeur déjà présente.
L'enregistrement dans le log de modification est fait juste après l'achèvement
de la requête, mais avant la levée des verrous, et les validations. Cela garantit
que la requête sera enregistrée.
Si vous voulez modifier une base grâce aux fichier de log de modification, vous
pouvez utiliser la commande suivante (en supposant que vos fichiers de log de modification
porte le nom de
file_name.###
) :
shell> ls -1 -t -r file_name.[0-9]* | xargs cat | mysql
|
ls
est utilisé pour obtenir toute la liste des fichiers de logs du dossier.Ceci peut être utile si vous devez repartir d'un fichier de sauvegarde après
un crash, et que vous souhaitez réexécuter les modifications qui ont eu lieu depuis
la sauvegarde.
|