2010-03-20 9 views
27

Depuis que je fais une sauvegarde complète de tout mon système Debian, je pensais que si j'avais une copie du répertoire /var/lib/mysql est une alternative viable au dumping des tables avec mysqldump.Copier/var/lib/mysql est-il une bonne alternative à mysqldump?

  • sont toutes les informations nécessaires contenues dans ce répertoire?
  • Peut-on importer des tables uniques dans un autre mysql?
  • peut-il y avoir des problèmes lors de la restauration de ces fichiers sur une version (probablement légèrement) différente du serveur mysql?
+2

Faire cela pendant des années, aucune incohérence! – sepehr

+2

Percona dispose d'un outil qui prend cette approche pour faire des "sauvegardes à chaud" des serveurs en cours d'exécution: http://www.percona.com/doc/percona-xtrabackup/2.1/ – Eli

Répondre

26
  • Oui
  • Oui si la table utilise le moteur MyISAM (par défaut). Pas si ça utilise InnoDB.
  • Probablement pas, et s'il y a, il vous suffit d'exécuter mysql_upgrade pour les fixer

Pour éviter de bases de données dans un état incohérent, vous pouvez MySQL shutdown ou utiliser LOCK TABLES puis FLUSH TABLES avant la sauvegarde La deuxième solution est un peu meilleure car le serveur MySQL restera disponible pendant la sauvegarde (bien que seulement en lecture).

+1

Merci à tous pour cette solution. Il est découpé au moins une heure de temps de réimportation! Et si vous voulez le faire en une seule instruction: Tapez "FLUSH TABLES WITH READ LOCK;". –

+0

Pouvez-vous entrer dans les détails sur la réponse à la question suivante: "Peut-on importer des tables uniques dans un autre mysql"? "Oui, tant que c'est MyISAM" est une réponse plutôt clairsemée. – bobpaul

3

C'est parfaitement correct tant que vous arrêtez le serveur MySQL en premier et que vous utilisez exactement la même version pour récupérer la "sauvegarde". Sinon, ce n'est pas le cas.

4

Cette approche ne fonctionnera que si vous fermez la base de données en premier. Sinon, vous pourriez bien finir dans un état incohérent par la suite. Utilisez d'abord la commande /etc/init.d/mysql stop. Vous pouvez ensuite le redémarrer après la sauvegarde.