2009-10-17 4 views
2

Je souhaite configurer un travail cron afin qu'il sauvegarde automatiquement ma base de données MySQL pendant que la base de données est en cours d'exécution, puis que FTP la sauvegarde sur mon serveur de sauvegarde. Je suppose que je peux le faire en utilisant un script bash.Comment créer un travail Cron pour sauvegarder la sauvegarde MySQL et FTP sur mon serveur de sauvegarde?

Quelqu'un sait-il un bon moyen d'accomplir cela?

Merci d'avance.

+0

J'ai juste trouvé ce qui suit mais je ne sais pas si cela fonctionne bien. Des commentaires? http://sourceforge.net/projects/automysqlbackup/ – Tedd

+0

InnoDB ou MyISAM? –

+0

InnoDB (MySQL v5) – Tedd

Répondre

2

C'est une approche très simple à l'aide du client en ligne de commande ftp lftp:

backup.sh:

mysqldump -f [database] | gzip > /backup/[database].dump.gz 
lftp -f /backup/lftp.script 

lftp.script:

open backup.ftp.example.com 
user [username] [password] 
cd /backup 
mv webflag.dump.gz.8 webflag.dump.gz.9 
mv webflag.dump.gz.7 webflag.dump.gz.8 
mv webflag.dump.gz.6 webflag.dump.gz.7 
mv webflag.dump.gz.5 webflag.dump.gz.6 
mv webflag.dump.gz.4 webflag.dump.gz.5 
mv webflag.dump.gz.3 webflag.dump.gz.4 
mv webflag.dump.gz.2 webflag.dump.gz.3 
mv webflag.dump.gz.1 webflag.dump.gz.2 
mv webflag.dump.gz webflag.dump.gz.1 

Note: Cette approche a une nombre de questions:

  • ftp i s non chiffré, de sorte que toute personne qui est capable de renifler le réseau, est capable de voir à la fois le mot de passe et les données de la base de données. Le faire passer par gpg -e [clé] peut être utilisé pour crypter le vidage mais les mots de passe ftp restent non chiffrés (sftp, scp sont de meilleures alternatives)
  • si quelqu'un pirate le serveur de base de données, il peut utiliser les informations utilisateur dans ce script pour accéder au serveur ftp et en fonction des droits de supprimer les sauvegardes (cela est arrivé dans le monde réel: http://seclists.org/fulldisclosure/2009/Jun/0048.html)
+0

+1 Bien que vous deviez peut-être fournir des drapeaux serveur/utilisateur/mot de passe avec mysqldump. – Tinister

+3

Vous ne devez pas effectuer de sauvegarde FTP du serveur Web en direct sur le serveur de sauvegarde. Raison: Votre serveur Web en direct est très public, et donc une plus grande cible pour être compromise. Si cela se produit, vous perdez également toutes vos sauvegardes. Au lieu de cela, votre serveur de sauvegarde devrait ftp dans le webserver en direct pour les décharges de base de données et les télécharger. Le serveur de sauvegarde ne doit pas être sur un réseau accessible au public, donc même si quelqu'un possède votre serveur web, les sauvegardes sont toujours sécurisées. – davethegr8

+0

Je suis conscient de ce problème, c'est pourquoi je l'ai signalé dans mon message. Les deux plus grandes sociétés proposant des services d'hébergement de serveurs en Allemagne n'offrent toutefois qu'une possibilité de sauvegarde de cette manière. –

0

Si la base de données est très importante le fichier de sauvegarde peut ne pas correspondre au disque dur du serveur. Dans ce cas, je vous suggère de la façon suivante qui utilise des tuyaux et ncftpput:

mysqldump -u <db_user> -p<db_password> <db_name> | gzip -c | ncftpput -u <ftp_user> -p <ftp_password> -c <ftp_url> <remote_file_name> 

Il fonctionne très bien pour moi.

Questions connexes