4.4 Prévention des désastres et restauration
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Sauvegardes de base de données . Syntaxe de BACKUP TABLE . Syntaxe de RESTORE TABLE . Syntaxe de CHECK TABLE . Syntaxe de REPAIR TABLE . Utilisation de myisamchk pour la maintenance des tables et leur recouvrement ->Mettre en place un régime d'entretien de MySQL . Obtenir des informations sur une table
|
4.4.7 Mettre en place un régime d'entretien de MySQL
Depuis MySQL version 3.23.13, vous pouvez vérifier les tables de type MyISAM
avec la commande
CHECK TABLE
. Syntaxe de
CHECK TABLE
. Vous pouvez aussi
réparer les tables avec la commande
REPAIR TABLE
. Syntaxe de
REPAIR TABLE
.
C'est une bonne idée que d'effectuer des vérifications des tables régulièrement,
plutôt que d'attendre qu'un problème survienne. Pour faire ces vérifications,
vous pouvez utiliser la commande
myisamchk -s
. L'option
-s
(raccourci pour
--silent
) fait que
myisamchk
s'exécute en mode
silencieux, et n'affiche que les messages d'erreurs.
C'est aussi une bonne idée que de vérifier les tables lorsque le serveur
démarre. Par exemple, à chaque fois qu'une machine redémarre au milieu d'une
modification de table, vous devrez faire une vérification de toutes les
tables qui pourraient être affectées : c'est une ``table supposéement corrompue''.
Vous pouvez ajouter un test à
safe_mysqld
pour qu'il exécute
myisamchk
,
afin de vérifier toutes les tables qui ont été modifiées dans les 24 dernières
heures, si il reste un vieux fichier
.pid
(identifiant de processus) après
un redémarrage : le fichier
.pid
est créé par le serveur
mysqld
lorsqu'il démarre, et il est supprimé lorsque le serveur s'arrête dans des conditions
normales. La présence d'un fichier
.pid
au démarrage indique que le serveur
s'est arrêté anormalement.
Un test encore meilleur serait de vérifier toutes les tables dont la date de
modification est plus récente que celle du fichier
.pid
.
Vous devriez aussi vérifiez vos tables régulièrement durant les opérations
normales. Chez MySQL AB, nous utilisons une tâche en
cron
pour vérifier toutes
nos tables importantes au moins une fois par semaine, avec une ligne comme celle-ci
dans le fichier
crontab
:
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
|
Cela nous affiche les informations sur les tables qui ont été corrompues,
de façon à ce que nous puissions les examiner et les réparer.
Comme nous n'avons jamais eu de table qui se soit corrompue inopinément
(des tables qui se corrompent pour d'autres raisons que des problèmes
matériels) depuis quelques années (ce qui est véridique), une fois
par semaine est un bon rythme pour nous.
Nous recommandons que vous commenciez par exécuter la commande
myisamchk -s
chaque nuit, sur toutes les tables qui ont été modifiées dans les
24 dernières heures, jusqu'à ce que vous preniez confiance en MySQL.
Normalement, vous n'avez pas à maintenir autant les tables MySQL. Si vous
changez les tables avec un format de ligne dynamique (les tables avec des
colonnes
VARCHAR
,
BLOB
ou
TEXT
) ou que vous avez des tables
avec de nombreuses lignes effacées, vous pouvez envisager de faire des
défragmentations du fichier, pour récupérer cet espace. Une fois par mois est un
bon rythme.
Vous pouvez faire cela avec la commande SQL
OPTIMIZE TABLE
sur les tables
en question, ou bien, si vous avez éteint le serveur
mysqld
, faites :
isamchk -r --silent --sort-index -O sort_buffer_size=16M */*.ISM myisamchk -r --silent --sort-index -O sort_buffer_size=16M */*.MYI
|
|