2010-08-29 5 views
4

J'ai une assez grande base de données MySql, et j'ai besoin d'en faire des sauvegardes tous les jours. Je dois être capable de faire des sauvegardes depuis n'importe quel ordinateur, donc j'ai pensé à faire un script php pour le faire et mettre ce script php en ligne (avec protection par mot de passe et autorisation etc ... pour que je puisse y accéder) .Sauvegarde de la base de données MySql avec PHP

Je me demande cependant comment cela se fait-il correctement?

Quelles commandes dois-je utiliser, et est-il possible de modifier les paramètres de la sauvegarde (par exemple Add AUTO_INCREMENT value = true)?

Je vous serais reconnaissant des exemples ...

En outre, si cela est une mauvaise méthode (dangereuse, ou peut-être donne de mauvaises sauvegardes avec de mauvais fichiers sql), quelle autre méthode serait préférable? J'ai un shell-access et j'ai un VPS (serveur ubuntu).

Ma version est Mysql 5.1

Merci

Répondre

8

Il n'y a pas besoin d'impliquer PHP dans la sauvegarde de base de données. Vous avez juste besoin d'un script qui utilise mysqldump pour sauvegarder la base de données, et setup a CRON job d'exécuter périodiquement le script:

mysqldump db_name > backup-file.sql 

... sauvegardera votre base de données dans un fichier, en redirigeant la sortie du mysqldump dans le fichier spécifié prénom. Peter a soulevé un bon point, que la commande ne vous donnerait qu'un jour d'archivage - toute archive de plus de deux jours serait écrasée. Cela vous permettra avez un journal roulant remontant sept jours:

CURRENT_DAY_OF_WEEK=`date '+%u'` 
FILENAME="mysqlbackup_"$CURRENT_DAY_OF_WEEK".sql" 

mysqldump db_name > $FILENAME 

Il faut aussi savoir que les autorisations de fichiers s'appliqueront - ne peut pas écrire un fichier si l'utilisateur exécutant le script ne dispose pas des autorisations dans le dossier.

+2

Bien sûr, vous ne devriez probablement pas écraser le même fichier tous les jours. Peut-être virer à la date actuelle au nom de fichier ou un tel .... –

+1

@Peter Ajtai: Point Goood, mis à jour. –

+0

Ne pas envoyer de PHP pour faire un travail cron mans – Xeoncross

0

Je suis d'accord avec OMG Ponies mysqldump + script est la voie à suivre.

La seule autre option que j'utilise est de configurer un serveur esclave. Cela fournit une sauvegarde quasi instantanée contre les pannes matérielles et peut être situé dans un bâtiment différent de votre serveur principal. À moins d'avoir un grand nombre d'écritures dans la base de données, vous n'avez pas forcément besoin d'un serveur très puissant car il ne traite pas les requêtes, mais uniquement les mises à jour de la base de données.

Questions connexes