La clé d'une gestion prudente de votre serveur est la sauvegarde régulière des données.
InnoDB Hot Backup
est un utilitaire de
sauvegarde en ligne, qui vous permet de faire des sauvegardes
pendant que InnoDB
fonctionne. InnoDB
Hot Backup
ne vous impose pas l'arrêt de votre serveur,
et il ne pose pas de verrous qui vont perturber le fonctionnement
normal de votre serveur. InnoDB Hot Backup
est
un utilitaire propriétaire, qui n'est pas inclut dans la
distribution MySQL. Voyez le site web de InnoDB Hot
Backup
:
http://www.innodb.com/manual.php,
pour plus d'informations.
Si vous pouvez arrêter votre serveur MySQL, alors faites une sauvegarde binaire de votre base comme ceci :
Arrêtez le serveur MySQL et assurez vous qu'il s'est bien arrêté sans erreur.
Copiez tous les fichiers de données dans votre entrepôt.
Copiez tous les fichiers de log InnoDB
dans
votre entrepôt.
Copiez vos fichiers de configuration
my.cnf
dans l'entrepôt.
Copiez tous les fichiers .frm
de vos
tables InnoDB
dans votre entrepôt.
En plus de prendre des sauvegardes binaires comme décrit
ci-dessus, vous devriez aussi prendre des exports de vos tables
avec mysqldump
. La raison à cela est que le
fichier binaire peut être corrompu sans que vous vous en rendiez
compte. Les tables exportées sont stockées sous forme de fichier
texte, lisible à l'oeil, et bien plus simple à sauver que les
fichiers binaires. Repérer la corruption d'une table dans les
fichiers exportés est bien plus facile, et comme le format est
bien plus simple, il y a moins de chances que les données soient
corrompues.
En fait, c'est une bonne idée que de faire une exportation des tables au moment où vous sauvez les fichiers binaires des bases. Vous devez arrêter tous les clients qui utilisent le serveur. Puis, vous pouvez faire la sauvegarde binaire et l'export : vous aurez ainsi une archive cohérente en deux formats.
Pour restaurer une base InnoDB
à partir d'une
sauvegarde binaire, vous devez utiliser le serveur MySQL avec les
logs général et d'archive activés. Par log général, nous
entendons le log de MySQL, et non pas le log spécifique
d'InnoDB
.
mysqlbinlog yourhostname-bin.123 | mysql
Pour restaurer les données après un crash MySQL, la seule chose
à faire est de relancer le serveur. InnoDB
va
automatiquement vérifier les historiques, et reprendre toutes les
opérations qui ont eu lieu jusqu'à présent.
InnoDB
va automatiquement annuler les
transactions qui n'ont pas été achevées. Durant la
restauration, InnoDB
va afficher des séquences
semblables à celle-ci :
~/mysqlm/sql > mysqld InnoDB: Database was not shut down normally. InnoDB: Starting recovery from log files... InnoDB: Starting log scan based on checkpoint at InnoDB: log sequence number 0 13674004 InnoDB: Doing recovery: scanned up to log sequence number 0 13739520 InnoDB: Doing recovery: scanned up to log sequence number 0 13805056 InnoDB: Doing recovery: scanned up to log sequence number 0 13870592 InnoDB: Doing recovery: scanned up to log sequence number 0 13936128 ... InnoDB: Doing recovery: scanned up to log sequence number 0 20555264 InnoDB: Doing recovery: scanned up to log sequence number 0 20620800 InnoDB: Doing recovery: scanned up to log sequence number 0 20664692 InnoDB: 1 uncommitted transaction(s) which must be rolled back InnoDB: Starting rollback of uncommitted transactions InnoDB: Rolling back trx no 16745 InnoDB: Rolling back of trx no 16745 completed InnoDB: Rollback of uncommitted transactions completed InnoDB: Starting an apply batch of log records to the database... InnoDB: Apply batch completed InnoDB: Started mysqld: ready for connections
Si votre base ou vos disques se corrompent, vous devez faire la restauration à partir de sauvegardes. En cas de corruption, vous devriez trouver une sauvegarde qui n'est pas corrompue. A partir de la sauvegarde, faites une restauration à partir des fichiers de logs généraux, en suivant les instructions du manuel.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.