Serveur MySQL de sauvegarde

13

Quelle est la meilleure façon de sauvegarder un serveur MySQL? Je voudrais une méthode qui ne nécessite pas d'arrêter le serveur. Quelque chose comme la sauvegarde à chaud InnoDB est-il nécessaire, ou puis-je simplement utiliser les outils de sauvegarde fournis dans les outils de l'administrateur MySQL. Quels avantages l'un offre-t-il sur l'autre?

Kibbee
la source

Réponses:

12

Nous utilisons mysqldump, qui fonctionne lorsque MySQL est en cours d'exécution. Nous avons commencé à utiliser mysqldump parce que c'était le plus facile à installer lorsque nos besoins étaient petits, et il semblait répondre à ces besoins. Nos bases de données ont augmenté depuis lors, mais nous n'avons pas encore dépassé mysqldump. Que cela vous convienne dépendra de la taille de vos bases de données, de leur charge de fonctionnement habituelle et probablement d'un tas d'autres choses.

TimB
la source
mysqldump est génial. Contrairement aux vidages binaires de certains autres RDMS, par défaut, les fichiers générés par mysqldump sont des fichiers texte avec des commandes sql à part entière - principalement des instructions CREATE TABLE et INSERT pour les lignes. En tant que simples fichiers texte, ils peuvent être manipulés, compressés ou cryptés facilement.
nedm
3
mysqldump tombe en panne lorsque vous avez de grandes bases de données et / ou lorsque vous comptez sur MyISAM. Nous avons quelques bases de données 400G avec de nombreux index qui doivent être reconstruits lors de l'importation du vidage, de sorte qu'une récupération à partir d'une sauvegarde prend des jours d'arborescence. L'instantané LVM offre un temps de récupération bien meilleur lorsque vous avez dépassé mysqldump.
Nils-Anders Nøttseter
4

jetez un œil à xtrabackup de percona - c'est une alternative open source intéressante à mysqlhotcopy pour les bases de données innodb.

vous pouvez en savoir plus ici

pQd
la source
3

mysqldump peut être utilisé, mais il ne garantira pas un ensemble de données cohérent , sauf si vous verrouillez toutes les tables pendant la durée du vidage. Cela mettra la base de données en mode lecture seule , mais garantira la cohérence du vidage.

Vous pouvez verrouiller les tables avec la commande:

FLUSH TABLES WITH READ LOCK;

Et lorsque vous avez terminé, vous pouvez libérer le verrou avec:

UNLOCK TABLES;
Brent
la source
7
mysqldump --single-transaction garantira un instantané cohérent
Dave Cheney
5
--single-transaction ne fonctionne que lorsque toutes vos tables sont InnoDB. Les tables MyISAM ne prennent pas en charge les transactions.
Nils-Anders Nøttseter
2

Configurez la réplication MySQL . En prime, vous obtenez un serveur pour exécuter des tâches de reporting lourdes et mysqldump sans affecter votre base de données de production principale.

Dave Cheney
la source
N'oubliez pas que la réplication peut être retardée et donc pas nécessairement une sauvegarde ponctuelle de votre maître.
2
La réplication n'est pas une sauvegarde. Si vous supprimez accidentellement quelque chose dans le maître, l'esclave le supprime également. L'esclave est bon d'utiliser mysqldump, car cela n'affectera pas votre serveur de production (comme Dave l'a mentionné).
Martijn Heemels
0

La manière la plus simple est d'utiliser simplement la commande mysqldump .

WerkkreW
la source
0

Il y a aussi un outil appelé mysqlhotcopy que j'ai examiné tout de suite, et j'ai pensé qu'il était très prometteur - je ne l'ai jamais utilisé cependant.

Brent
la source