Ajouter et retirer des données et des logs InnoDB
<<<
Sauver et restaurer une base InnoDB Transférer une base de données InnoDB vers une autre machine
>>>

16 Tables InnoDB
 Manuel de Référence MySQL 4.1 : Version Française

Présentation des tables InnoDB
Informations de contact InnoDB
InnoDB avec MySQL version 3.23
Configuration InnoDB
Options de démarrage InnoDB
Créer des bases InnoDB
Créer des tables InnoDB
Ajouter et retirer des données et des logs InnoDB
->Sauver et restaurer une base InnoDB
Transférer une base de données InnoDB vers une autre machine
Modèle de transactions et verrouillage InnoDB
Conseils pour l'amélioration des performances InnoDB
Implémentation du multi-versionnage
Structures de tables et d'index
Gestion de l'espace fichiers et des entrées/sorties disque
Gestion des erreurs InnoDB
Restrictions sur les tables InnoDB
Résolution de problèmes avec InnoDB

16.9 Sauver et restaurer une base InnoDB

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.

Sommaire :

<< Sauver et restaurer une base InnoDB >>
Ajouter et retirer des données et des logs InnoDB Tables InnoDB Transférer une base de données InnoDB vers une autre machine