IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

script de sauvegarde de la base de donnees


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Par défaut script de sauvegarde de la base de donnees
    salut, je suis en train d’écrire un script de sauvegarde quotidienne (différentielle)et hebdomadaire de ma base de données. pour le moment,je veux commencer par sauvegarder d'abord les scripts de création de table (DDL) sauf que je suis confronte a un problème qui m’empêche d'avancer. le script ne renvoi que la DDL d'une seule table alors que quand je compte le nombre de table que je possède, j'ai plus de 500 tables.comment faire pour recuperer la DDL de toutes les tables de ma base ? j'execute le script a partir d'un fichier .bat.

    voici mon script PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    function dump_db($conn, $base, $mode){
        $i=1;
        $entete  = "-- ----------------------\n";
        $entete .= "-- dump de la base ".$base." au ".gmdate(DATE_RFC822) ."\n";
        $creations = "";
        $insertions = "\n\n";
        echo "debut de la sauvegarde des donnees de la base de donnees";
        $listeTables = mysqli_query($conn, "SHOW TABLES");
            //nombre de tables dans la table
        $rowcount=mysqli_num_rows($listeTables);
        $entete .="Il y a actuellement: " .$rowcount. " Tables dans la base de donnees ".$base . "\n" ;
        $entete .= "-- ----------------------\n\n\n";
    while($table = mysqli_fetch_array($listeTables)) {
        // si on ne veut sauvegarder que la structure ou la totalité de la BDD.
         if($mode == 1 || $mode == 2){
                $creations .= "-- -----------------------------\n";
                $creations .= "-- " .$i. "--Structure de la table ".$table[0]."\n";
                $creations .= "-- -----------------------------\n";
                $listeCreationsTables =  mysqli_query($conn, "SHOW CREATE TABLE ".$table[0]);
              while($creationTable = mysqli_fetch_array($listeCreationsTables)){
                  $creations.= $creationTable[1].";\n\n";
                  $i++;
                     }
                 }
        mysqli_close($conn);
        $fichierDump = fopen("backupdatabase.sql", "wb");
        fwrite($fichierDump, $entete);
        fwrite($fichierDump, $creations);
        fclose($fichierDump);
        echo "Sauvegarde terminée";
            }
        }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu indentes correctement ton code, tu vas te rendre compte que tu as un problème de placement des accolades et que tu fermes la connexion à la base avant d'avoir parcouru toutes tes tables

    Code réindenté, non corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    function dump_db($conn, $base, $mode) {
        $i = 1;
        $entete = "-- ----------------------\n";
        $entete.= "-- dump de la base " . $base . " au " . gmdate(DATE_RFC822) . "\n";
        $creations = "";
        $insertions = "\n\n";
        echo "debut de la sauvegarde des donnees de la base de donnees";
        $listeTables = mysqli_query($conn, "SHOW TABLES");
        //nombre de tables dans la table
        $rowcount = mysqli_num_rows($listeTables);
        $entete.= "Il y a actuellement: " . $rowcount . " Tables dans la base de donnees " . $base . "\n";
        $entete.= "-- ----------------------\n\n\n";
        while ($table = mysqli_fetch_array($listeTables)) {
            // si on ne veut sauvegarder que la structure ou la totalité de la BDD.
            if ($mode == 1 || $mode == 2) {
                $creations.= "-- -----------------------------\n";
                $creations.= "-- " . $i . "--Structure de la table " . $table[0] . "\n";
                $creations.= "-- -----------------------------\n";
                $listeCreationsTables = mysqli_query($conn, "SHOW CREATE TABLE " . $table[0]);
                while ($creationTable = mysqli_fetch_array($listeCreationsTables)) {
                    $creations.= $creationTable[1] . ";\n\n";
                    $i++;
                } // FIN de while ($creationTable = mysqli_fetch_array($listeCreationsTables))
            } // FIN de if ($mode == 1 || $mode == 2)
            mysqli_close($conn);
            $fichierDump = fopen("backupdatabase.sql", "wb");
            fwrite($fichierDump, $entete);
            fwrite($fichierDump, $creations);
            fclose($fichierDump);
            echo "Sauvegarde terminée";
        } // FIN de while ($table = mysqli_fetch_array($listeTables))
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Sinon, il existe mysqldump qui ne sert qu'aux backups de bases de données ^^

    Voilà un petit exemple pour une CRON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump -u 'username' -p'password' DBNAME > /home/db_backups/myDB_`date +\%Y\%m\%d_\%H\%M`.sql

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 278
    Par défaut
    Attention, pour garder la cohérence des bases, il faut poser un verrou le temps du dump.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. [9.3] Script de sauvegarde d'une base et restauration sur un autre serveur
    Par cdjkhdjlhxjklnjskznj dans le forum Administration
    Réponses: 2
    Dernier message: 19/02/2015, 13h27
  2. [MySQL] Script de restauration de la base des donnees
    Par saramery dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 06/03/2010, 20h35
  3. Sauvegarde d'une base de données
    Par dcollart dans le forum Informix
    Réponses: 8
    Dernier message: 28/05/2006, 00h23
  4. Sauvegarde de base de donnée par SSH
    Par onet dans le forum Réseau
    Réponses: 2
    Dernier message: 05/03/2006, 22h42
  5. [SGBD] [MySql] Sauvegarder une base de données
    Par joquetino dans le forum Administration
    Réponses: 2
    Dernier message: 23/02/2006, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo