le MEMO du WEB développeur
••• PHP •••  Liste des Mémos, astuces et bonnes pratiques

Script de Backup / Sauvegarde de la Base Mysql en PHP

Le script ci dessous permet de faire une sauvegarde compressée de la base de données MySQL dans le répertoire DB_Backup préalablement créé à la racine de votre site.
Le nom du script contient la date de la génération et j'ai rajouté une fonction qui permet d'effacer, après la génération de la sauvegarde, tous les fichiers de sauvegarde vieux de plus de $NbJours jours.

Script de sauvegarde utilisé sur mes sites hébergés chez 1&1.

<?php
$serveur          = "nom_serveur"
$utilisateur      = "nom_user";
$motDePasse       = "mdp";
$base             = "nom_BDD"; 
$dir_backup       = getenv('DOCUMENT_ROOT')."/DB_Backup";

MYSQL_CONNECT($serveur, $utilisateur, $motDePasse) or die ( "<h1>Serveur MySQL non disponible</h1>");
MYSQL_SELECT_DB($base) or die ( "<h1>Base non disponible</h1>");

// Génération du fichier de sauvegarde dans le répertoire $dir_backup
  system(sprintf(
    'mysqldump --opt -h%s -u%s -p"%s" %s | gzip > %s/SauveBD_'.date("d_n_Y_H_i_s").'.sql.gz',
    $serveur,
    $utilisateur,
    $motDePasse,
    $base,
    $dir_backup
  ));

$NbJours = 7;
// Suppression des vieux fichiers de sauvegarde 
   $folder = new DirectoryIterator($dir_backup);
    foreach($folder as $file){ 
       if( ($file->isFile()) && (!$file->isDot()) ) {
          if (time() - $file->getMTime() > $NbJours*24*3600) unlink($file->getPathname());   
       }
    }
?>

Attention, si votre base de données Mysql est trop lourde,  il est plus prudent de créer un fichier de sauvegarde par table.

Script de sauvegarde de la BDD pour bases lourdes

<?php
  $result = MYSQL_QUERY("SHOW TABLES");
  $numrow = MYSQL_NUM_ROWS($result);
  for($i = 0;$i < $numrow;$i++) {
    $table = MYSQL_RESULT($result,$i);
    // echo "Sauvegarde de la table ".$table;
    system(sprintf("mysqldump --opt -h $serveur -u $utilisateur -p\"$motDePasse\" $base $table | gzip > %s/$table.sql.gz",$dir_backup));
  }
?>

 

publié le 19/05/2013 par Memo Web
Commentaire :
un grand merci, cela fonctionne parfaitement !!
par inconnu, le 24/01/2014
Commenter le Mémo :

Vérifier la validité d'une URL en PHP - Expression régulière
Comment formater un grand nombre à l'affichage pour le rendre plus lisible (en PHP)
La superglobale $_SERVER et ses utilisations
Les variables à nom "variables" en PHP
Fonction de sécurisation des données passées dans formulaire ou URL
L'utilisation des sessions en PHP
Instruction SWITCH
Vérifier qu'une chaine est constituée de caractères alphanumériques
Les cookies faciles
Fonction explode en utilisant plusieurs séparateurs
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos