web-dev-qa-db-fra.com

Dois-je utiliser mysqldump ou mysqlhotcopy pour les sauvegardes de bases de données MySQL?

J'ai un blog WordPress exécuté sur une base de données MySQL que je souhaite sauvegarder régulièrement. Serait-il préférable d'utiliser le programme mysqldump ou le script mysqlhotcopy pour effectuer des sauvegardes? Quels sont les avantages et les inconvénients de chacun? Y a-t-il d'autres options que je devrais envisager?

13
Matthew Shanley

Je peux vous dire que j'utilise actuellement mysqldump pour conserver une sauvegarde de ma base de données. Je le fais parce que mon objectif est de conserver des sauvegardes hebdomadaires afin que, si quelqu'un supprime leur page Web, je puisse le récupérer au plus il y a une semaine.

La bonne chose à propos de cela est qu'il s'agit d'un fichier texte de base que je peux importer dans n'importe quel ordinateur équipé de MySQL, le charger et rechercher les données manquantes. Note: pour obtenir ce que je voulais, la commande que j'utilise dans mon script est la suivante:

mysqldump --databases databaseName > /file/path

Le --databases est ce qui permet à mysqldump de vider les en-têtes CREATE DATABASE IF NOT EXIST afin que je puisse l'importer n'importe où.

Bien que cette méthode fonctionne pour moi, je suis sûr qu'il existe de meilleures méthodes pour d'autres objectifs. Je peux aussi dire que, comme pour toute solution de sauvegarde, vous devriez la stocker au moins sur un autre ordinateur, et de préférence hors site (dans le cloud) si vous le pouvez.

5
Mike

J'envisagerais d'utiliser un plugin WordPress appelé "Sauvegarde de la base de données WordPress (WP-DB-Backup)", qui figure également sur le Wordpress. _ Sauvegarde de la base de données guide . Ce plugin peut sauvegarder la base de données selon un planning et vous l'envoyer par courrier électronique (en supposant qu'il s'agisse d'une petite base de données). Vous pouvez également simplement le sauvegarder localement. Vous pouvez exclure le spam et les révisions de commentaires pour réduire la base de données.

Moins de contrôle mais plus facile à mettre en œuvre.

Les dumps MySQL vous donnent le contrôle le plus . Votre service d'hébergement peut également être un facteur limitant. Certains hôtes ne vous donnent pas accès à l'exécution de tâches cron ni à la commande mysqldump.

5
citadelgrad

SUGGESTION # 1

Si vous effectuez des sauvegardes de l'instance MySQL, il est préférable de configurer MySQL Replicaton de manière à ce que toute charge de serveur imposée ou toute augmentation des E/S du disque n'ait aucun impact sur votre base de données de production.

Une fois que vous avez configuré la réplication MySQL, vous pouvez créer un script mysqldump ( voir mon message à la page suivante). DBA StackExchange pour la variété de techniques ), tant que vous exécutez ces mysqldumps sur un esclave.

SUGGESTION # 2

Si vous ne pouvez pas configurer un autre serveur pour la réplication MySQL et que toutes vos données sont InnoDB, vous devrez effectuer un pointage dans le temps, mysqldump. Ceci est fait en utilisant l'option --single-transaction avec mysqldump. Ainsi, si vous exécutez un mysqldump à partir de minuit et que la sauvegarde prend fin à 12h15, la sortie de mysqldump, une fois restaurée, reflète les données à partir de 00h00.

SUGGESTION # 3

Un autre programme disponible pour les sauvegardes MySQL est XtraBackup de Percona.

XtraBackup est un outil complet qui se comporte comme rsync mais qui a un but précis dans la vie. Il peut commencer par copier toutes les données et les espaces de table InnoDB. Il a la capacité de créer des points de contrôle en interne et d'effectuer une récupération InnoDB sur place afin d'obtenir une sauvegarde parfaite à un moment précis. XtraBackup a également une fonctionnalité supplémentaire qui permet la création de sauvegardes incrémentielles. Une autre fonctionnalité supplémentaire est la création de fichiers journaux InnoDB, également générés par une récupération après incident sur place. Il existe également un logiciel d'encapsulation permettant la copie gelée des tables MyISAM.

Il effectue un retour de l'instance MySQL, mais avec une différence distincte. Le moment de la sauvegarde est basé sur le moment où la sauvegarde est terminée plutôt que sur le début. Ainsi, si vous exécutez XtraBackup à partir de minuit et que la sauvegarde prend fin à 12h15, la sortie de mysqldump, une fois restaurée, reflète les données à partir de 12h15.

3
RolandoMySQLDBA

Cela dépend de votre moteur de stockage pour vos tables. Ceci fonctionne uniquement pour les tables ARCHIVE et MyISAM selon cette page de manuel MySQL et doit être exécuté sur le même ordinateur (c'est-à-dire sans utiliser de socket local ou TCP/IP)

MySQL dit aussi

Si vous effectuez une sauvegarde sur le serveur et que vos tables sont toutes des tables MyISAM, envisagez plutôt d'utiliser mysqlhotcopy car il permet d'accomplir des sauvegardes et des restaurations plus rapides.

2
Aiden Bell

Je vous recommande d'utiliser l'un des nombreux scripts de sauvegarde mySQL préexistants pour vous faciliter la tâche.

J'utilise "automysqlbackup", un script shell open source pouvant être défini en tant que tâche cron sur le serveur. Il couvre presque toutes les situations de sauvegarde imaginables: http://sourceforge.net/projects/automysqlbackup/ . Cela a fonctionné sans faille pour moi pendant plusieurs années - vivement recommandé.

1
Mark Hatton

mysqlhotcopy est un script Perl circa '05. Cela ajoute donc des dépendances, pour Perl et divers Perl. Je passerais sur celui-ci.

mysqldump est un programme C distribué avec MySQL et maintenu activement. Si vous ajoutez l'option -x, les tables seront verrouillées afin que vous soyez en or.

Personnellement, j'ai ce script dans cron (vous voudrez supprimer ces échappements si vous voulez le lancer à la main) et cela fonctionne comme un charme pour moi, en sauvegardant chacune de mes bases de données sur un fichier local, ainsi qu'un vidage complet de toutes les bases de données.

Et si vous avez plusieurs bases de données ici, vous voudrez également vider les octrois pour elles. Maatkit vous y aidera, et il vous suffira de mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql de faire sauvegarder vos tables de subventions et de les importer à nouveau.

1
intlect

Je sais également que de nombreux outils de gestion de serveur, tels qu'Interworx et Ensim, utilisent mysqldump pour sauvegarder les bases de données, puis une simple commande mysql pour restaurer. De cela, je suppose que c'est l'un des meilleurs moyens.

0
Darryl Hein