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

14

J'ai un blog WordPress fonctionnant 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 faire des sauvegardes? Quels sont les avantages et les inconvénients de chacun? Y a-t-il d'autres options à considérer?

Matthew Shanley
la source

Réponses:

5

Je peux vous dire que j'utilise actuellement mysqldump pour maintenir 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 sa ou ses pages Web, je puisse les récupérer il y a au plus une semaine.

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

mysqldump --databases databaseName > /file/path

C'est --databasesce qui fait que mysqldump vide les en- CREATE DATABASE IF NOT EXISTtêtes pour que je puisse l'importer où je veux.

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

Mike
la source
5

J'envisagerais d'utiliser un plugin WordPress appelé "Sauvegarde de base de données WordPress (WP-DB-Backup)", qui est également répertorié dans le guide de sauvegarde de la base de données Wordpress . Ce plugin peut sauvegarder la base de données selon un calendrier et vous l'envoyer par e-mail (en supposant qu'il s'agit d'une petite base de données). Vous pouvez également le sauvegarder localement. Vous pouvez exclure le spam de commentaires et les révisions pour réduire la taille de la base de données

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

Les vidages MySQL vous donnent le plus de contrôle . Votre service d'hébergement peut également être un facteur limitant. Certains hôtes ne vous permettent pas d'exécuter des tâches cron ou d'exécuter la commande mysqldump.

citadelgrad
la source
4

SUGGESTION # 1

Si vous effectuez des sauvegardes de l'instance MySQL, il est préférable de configurer MySQL Replicaton afin que toute charge de serveur imposée ou augmentation des E / S disque n'affecte pas votre base de données de production.

Une fois que vous avez configuré la réplication MySQL, vous pouvez scripter un mysqldump de différentes manières ( veuillez consulter mon article sur le DBA StackExchange pour la variété des 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 mysqldump ponctuel. Cela se fait en utilisant l' --single-transactionoption avec mysqldump. Ainsi, si vous avez exécuté un mysqldump commençant à minuit et que la sauvegarde s'est terminée à 00h15, la sortie du 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 a un but précis dans la vie. Il peut commencer par copier toutes les données et 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 sur incident InnoDB sur place pour obtenir une sauvegarde ponctuelle parfaite. XtraBackup possède é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 créés par une récupération après incident sur place. Il existe également des logiciels d'encapsulation pour fournir une copie figée des tables MyISAM.

Il effectue un retour de l'instance MySQL, mais avec une différence distincte. Le point dans le temps de la sauvegarde est basé sur le moment où la sauvegarde s'est terminée plutôt que sur le moment où elle a commencé. Ainsi, si vous avez exécuté XtraBackup à partir de minuit et que la sauvegarde s'est terminée à 00h15, la sortie de mysqldump une fois restaurée reflète les données à partir de 00h15.

RolandoMySQLDBA
la source
2

Dépend de votre moteur de stockage pour vos tables. Il ne fonctionne que pour les tables ARCHIVE et MyISAM conformément à cette page de manuel MySQL et doit être exécuté sur la même machine (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 d'utiliser plutôt mysqlhotcopy car il peut effectuer des sauvegardes et des restaurations plus rapides.

Aiden Bell
la source
1

Je recommande d'utiliser l'un des nombreux scripts de sauvegarde mySQL préexistants pour éviter de faire les choses correctement.

J'utilise "automysqlbackup" qui est un script shell open-source qui peut être défini comme un travail cron sur le serveur. Il couvre presque toutes les situations de sauvegarde imaginables: http://sourceforge.net/projects/automysqlbackup/ . Cela fonctionne parfaitement pour moi depuis plusieurs années - vivement recommandé.

Mark Hatton
la source
1

mysqlhotcopy est un script Perl vers '05. Il ajoute donc des dépendances, pour Perl et divers Perl. Je transmettrais celui-ci.

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

J'ai personnellement ce script dans cron (vous voudrez supprimer ces `échappements si vous voulez l'exécuter à la main) et cela fonctionne comme un charme pour moi, sauvegardant chacune de mes bases de données dans un fichier local, ainsi que un vidage complet de toutes les bases de données.

Et si vous avez plus d'une base de données là-bas, vous voudrez également vider les subventions pour eux. Maatkit vous y aidera et vous n'aurez qu'à mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlsauvegarder et à réimporter vos tables de subventions.

intlect
la source
0

Je sais également qu'un certain nombre d'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. D'après cela, je suppose que c'est l'un des meilleurs moyens.

Darryl Hein
la source