1 votes

Dois-je mettre mon site web hors service pour pouvoir utiliser mysqldump ?

J'ai un site web LAMP avec un backend mysql avec le moteur InnoDb pour les tables.

J'aimerais pouvoir utiliser mysqldump pour effectuer des sauvegardes périodiques de la base de données - SANS avoir à arrêter le serveur mysql (c'est-à-dire arrêter le site web) pendant la durée de la sauvegarde.

Je suis surpris de ne trouver cette information nulle part, pas même dans la documentation mySQL. On parle beaucoup de mysqlhotcopy, mais cela ne fonctionne que pour les tables IMSAM - et n'est donc pas intéressant/utile pour moi.

Quelqu'un sait-il si (comment ?) je peux utiliser mysqldump pour faire une copie/dump d'une base de données qui est toujours utilisée ?

Un lien vers la documentation officielle serait très utile, car je veux être sûr de bien faire les choses.

Je fonctionne sous Ubuntu 10.0.4 LTS.

2voto

John Gardeniers Points 27097

Non, il n'est pas nécessaire d'arrêter le site web pour effectuer une sauvegarde MySQL. Non seulement vous pouvez utiliser mysqldump sur une base de données MySQL en cours d'exécution, mais en fait le serveur doit être en cours d'exécution pour que mysqldump puisse s'y connecter. Le fait que vous utilisiez des tables InnoDB est un avantage, car les verrous seront brefs et il est très peu probable que vos utilisateurs s'en rendent compte.

Si vous êtes un tant soit peu nerveux ou hésitant à effectuer la sauvegarde, il n'est pas nécessaire d'exécuter une autre instance de MySQL et de mettre en place une réplication maître/esclave, en effectuant les sauvegardes sur l'esclave. De cette manière, vous pouvez être certain que le site web ne sera pas affecté par les sauvegardes.

1voto

EtienneT Points 1552

Cela dépend de la charge que vous avez, mais la suggestion de Janne est celle que la plupart des administrateurs choisissent en raison de la charge lors des sauvegardes.

Pour InnoDB, vous n'avez pas beaucoup de choix en matière de sauvegarde :

Je n'ai pas d'expérience avec aucun d'entre eux - mais j'ai fait des recherches à ce sujet il y a quelques mois lorsque nous envisagions de passer de MyISAM à InnoDB (nous ne l'avons pas fait, car nous avions trop de recherches dans l'index en texte intégral).

1voto

James Points 7442

Oui, vous pouvez utiliser mysqldump contre un serveur en cours d'exécution - vous devez - mysqldump se connecte simplement au serveur et exécute des commandes SQL sur le serveur pour générer le fichier de vidage.

Si vous êtes préoccupé par la cohérence du fichier dump, vous pouvez utiliser l'option --single-transaction si vous utilisez principalement des tables InnoDB. Le dump est alors intégré dans une transaction.

mysqldump peut avoir un impact sur les performances de votre serveur (comme n'importe quelle sauvegarde), il faut donc la tester avant de la mettre en production.

Une autre option, si vous utilisez LVM sous MySQL, serait d'utiliser mylvmbackup - prend un instantané du volume LVM afin que vous puissiez sauvegarder les fichiers de données comme vous le souhaitez.

0voto

Janne Pikkarainen Points 31244

(Ah, je vois que vous avez posté ceci à la fois sur superuser et ici. Voici un peu de copié-collé).

La méthode habituelle consiste à créer une instance esclave de MySQL et à effectuer la sauvegarde à partir de cette instance. Vous n'avez pas nécessairement besoin d'un serveur physique séparé pour le MySQL esclave, il est tout à fait possible de l'exécuter sur le même serveur (si vous disposez de l'espace disque et de la mémoire nécessaires ; du point de vue de l'unité centrale, un MySQL esclave généralement inactif ne ferait pas de mal).

0voto

Joeri Sebrechts Points 7483

L'utilisation de mysqldump pour sauvegarder les tables InnoDB est envisagée dans la documentation officielle ici

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

Vous n'aurez aucun problème. Je l'utilise tous les jours pour effectuer des sauvegardes périodiques d'un certain nombre de bases de données à une fréquence pouvant aller jusqu'à 15 minutes.

Pour garantir la cohérence de vos données, vous devez utiliser l'option --single-transaction lors de l'invocation de mysqldump. C'est tout.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X