Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sauvegarder la base de données MySQL en PHP ?

Bien que vous puissiez exécuter des commandes de sauvegarde à partir de PHP, elles n'ont rien à voir avec PHP. Tout tourne autour de MySQL.

Je suggérerais d'utiliser l'utilitaire mysqldump pour sauvegarder votre base de données. La documentation se trouve ici :http://dev.mysql. com/doc/refman/5.1/en/mysqldump.html .

L'utilisation de base de mysqldump est

mysqldump -u user_name -p name-of-database >file_to_write_to.sql

Vous pouvez ensuite restaurer la sauvegarde avec une commande comme

mysql -u user_name -p <file_to_read_from.sql

As-tu accès à cron ? Je suggérerais de créer un script PHP qui exécute mysqldump en tant que tâche cron. Ce serait quelque chose comme

<?php

$filename='database_backup_'.date('G_a_m_d_y').'.sql';

$result=exec('mysqldump database_name --password=your_pass --user=root --single-transaction >/var/backups/'.$filename,$output);

if(empty($output)){/* no output is good */}
else {/* we have something to log the output here*/}

Si mysqldump n'est pas disponible, l'article décrit une autre méthode, en utilisant le SELECT INTO OUTFILE et LOAD DATA INFILE commandes. La seule connexion à PHP est que vous utilisez PHP pour vous connecter à la base de données et exécuter les commandes SQL. Vous pouvez également le faire à partir du programme MySQL en ligne de commande, le moniteur MySQL.

C'est assez simple, vous écrivez un fichier SQL avec une seule commande, et vous le chargez/exécutez au moment de la restauration.

Vous pouvez trouver les docs pour select into outfile ici (il suffit de rechercher la page pour outfile). LOAD DATA INFILE est essentiellement l'inverse de cela. Voir ici pour la documentation.