Comment puis-je sauvegarder des bases de données de plusieurs gigaoctets dans MySQL? Points bonus pour des restaurations plus rapides


11

J'ai une base de données de 4 Go dans MySQL. Comment puis-je le sauvegarder? De plus, existe-t-il un moyen d'accélérer le processus de restauration en cas de besoin de récupération?

J'utilise actuellement un travail cron tous les soirs qui appelle mysqldumppour tout vider et je garde 3 jours de sauvegardes.

Réponses:


14

Nous avons environ 90 Go dans un MySQL, voici donc quelques suggestions:

  • Vous pouvez essayer l'appel suivant: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Utilisez les documents pour vérifier si ces commutateurs fonctionnent pour vous.)
  • Si vous utilisez uniquement les tables MYISAM, la copie de la base de données sur un autre lecteur et son tarage peuvent également être une alternative. Cela ne fonctionnera cependant pas avec INNODB, car il conserve un fichier supplémentaire. En outre, vous devez tester cela attentivement.
  • Activez les journaux binaires et sauvegardez-les. (C'est probablement mon préféré!)
  • Configurez la réplication et effectuez la sauvegarde sur l'un de vos esclaves, puis laissez-le rattraper le reste. C'est assez sympa quand il fonctionne, mais le problème est de le faire fonctionner. La réplication n'est pas amusante avec MySQL. :(
  • Votre système de fichiers prend-il en charge les instantanés? Si c'est le cas, c'est une excellente occasion de les utiliser.
  • Utilisez une solution commerciale, comme Amanda .

10

La meilleure façon serait de ne pas interrompre le fonctionnement normal. Pour les systèmes à haute fiabilité et à tolérance de pannes, vous disposez de 2 bases de données synchronisées et vous sauvegardez le secondaire. (par exemple, cet article howtoforge )

Sinon, lisez le manuel : utilisez myseldump comme vous le faites actuellement, ou utilisez le script mysqlhotcopy (utilisez comme mysqldump), ou arrêtez la base de données et copiez simplement les fichiers frm, MID, MYI (en utilisant rsync).

Je pense que le mécanisme d'arrêt + copie des fichiers est le plus rapide que vous obtiendrez.


3

Si certaines de vos bases de données sont en lecture seule ou modifiées, indiquez-les rarement comme un cron moins fréquent.


2

Pour répondre à votre question, l' option Extended_insert fonctionne bien pour moi. Si vous avez suffisamment de ressources pour la restauration, extended_insert insérera d'énormes blocs de données dans une seule requête, ce qui accélérera la restauration.


1

Vous devriez vraiment considérer le Xtrabackup de Percona

Le script wrapper "innobackupex" peut gérer MyISAM mais pour une sauvegarde non verrouillable / en ligne, vos tables doivent toutes être InnoDB.

À votre santé

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.