:: DEVELOPER ZONE
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.
© 1995-2005 MySQL AB. All rights reserved.
