Sauvegarder plusieurs bases de données d'un seul coup d'un seul

Réduire
Ceci est un sujet important.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par jisse03 Voir le message
    Ce sujet pouvant servir à beaucoup de monde, je le mets en épinglé.

    ...Un fil monté en épingle, on aura tout vu par ici !!
    — Euh, j'espère que ça pique pas trop quand même ! —



    Sinon, pour les sites Joomla distants, j'utilise l'extension LazyDbBackup signalée ici même par RobertG :

    Tu as aussi, que ce soit en ligne ou en local, LazyDbBackup qui peut sauvegarder les bases sans envoyer le fichier par mail, mais le placer dans un répertoire défini (avec gestion complémentaire par LDBchecker).
    Un grand merci à Robert Gastaud pour cette excellente solution qui fonctionne silencieusement et toute seule comme une grande (pour les versions 1.5 et 2.5 de Joomla) !

    Attention tout de même à l'emplacement de stockage choisi pour vos sauvegardes : si possible en amont du site (donc dans une zone inaccessible au public, hors de www ou de public_html)... pour des raisons de sécurité évidentes.



    Cordialement,



    PhilJ
    Dernière édition par PhilJ à 02/07/2012, 17h34

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Ce sujet pouvant servir à beaucoup de monde, je le mets en épinglé.

    Laisser un commentaire:


  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Bonjour et merci pour vos conseils.



    Mes tests sont positifs EN LOCAL pour un nombre quelconque de bases de données.

    Vous trouverez ci-dessous un code batch commenté (...« pour les nuls » ) pour Windows pour sauvegarder toutes vos bases de données locales. Inspiré de vos suggestions, il fonctionne correctement ...sauf quand mysqldump.exe fait des siennes, ce qui arrive parfois (et pour des raisons obscures ).

    Mais avant, quelques dispositions à prendre :

    1. Créer un dossier dans lequel viendront se loger les dumps .sql.
    2. Dans ce dossier, créer un sous-dossier, nommé par exemple zip, dans lequel on placera un archiveur || compresseur (voir plus loin).
    3. Dans ce sous-dossier zip, créer un sous-dossier qui contiendra les fichiers zip issus de la compression des dumps .sql. Nommez-le par exemple backupfiles.



    Détails point par point, avec XAMPP pour Windows installé sur c:\xampp (et mysqldump présent à l'adresse c:\xampp\mysql\bin\mysqldump.exe) :

    1. [*=1]Dans le code qui suit, l'adresse du premier dossier évoqué est : c:\xampp\mysql\backup\test.
      Cette adresse peut bien sûr être différente, par exemple : c:\backup (ou d:\backup, donc sur un autre disque que le disque système).
      NB : ce dossier accueillera également un fichier dumperrors.txt qui contiendra les éventuelles erreurs pouvant survenir lors de l'exécution du batch.

      [*=1]Toujours dans l'exemple de code ci-dessous, le dossier zip est : c:\xampp\mysql\backup\test\zip. Ce dossier contiendra un compresseur en version ligne de commande. Ici, j'ai installé 7za.exe (= 7zip, avec un a pour [stand]alone). Il est possible de le télécharger ici : http://www.7-zip.org/download.html. C'est le seul fichier ZIP de la série sur cette page, et il est présenté comme la « 7-Zip Command Line Version ».
      Tout ce qu'il y a à faire est de décompacter ce ZIP, et de placer une copie de ce petit programme tout seul dans le dossier que l'on vient de créer : c:\xampp\mysql\backup\test\zip.

      [*=1]Toujours dans ce code, le dossier qui recevra les fichiers zip compressés est : c:\xampp\mysql\backup\test\zip\backupfiles.



    Voici le code, avec les noms de dossiers que vous pouvez changer à votré gré en orange :

    Code:
    :: On détermine le nom des fichiers dumps avec horodatage :
    
    set year=%DATE:~6,4%
    set day=%DATE:~0,2%
    set mnt=%DATE:~3,2%
    set hr=%TIME:~0,2%
    set min=%TIME:~3,2%
    
    IF %day% LSS 10 SET day=0%day:~1,1%
    IF %mnt% LSS 10 SET mnt=0%mnt:~1,1%
    IF %hr% LSS 10 SET hr=0%hr:~1,1%
    IF %min% LSS 10 SET min=0%min:~1,1%
    
    :: Le résultat au format aa-mm-jj--heures-minutes :
    set backupdate=%year%-%mnt%-%day%--%hr%-%min%
    
     
    
    :: Le nom de l'utilisateur MySQl DB (on est en local => root) :
    set dbuser=root
    
    :: Le mot de passe utilisateur MySQl DB (on est en local => pas de mot de passe => chaîne vide) :
    set dbpass=
    
    :: Aller sur le dossier MySQL data afin de collecter les noms des sous-dossiers.
    pushd "c:\xampp\mysql\data"
    
    :: Parcourir les sous-dossiers un à un pour collecter les bases de données grâce à mysqldump.exe
    :: et les stocker au format .sql dans le répertoire de votre choix (ici : [COLOR=#ff8c00]c:\xampp\mysql\backup\test\[/COLOR]).
    :: NB : les erreurs éventuelles seront listées dans un fichier dumperrors.txt.
    
    @echo.
    @echo ----- C'est parti...
    @echo.
    @echo.
    @echo.
    @echo PASSE 1 : collecte des .sql ------
    @echo.
    
    FOR /D %%F IN (*) DO (
    
    "c:\xampp\mysql\bin\mysqldump.exe" --user=%dbuser% --password=%dbpass% --databases --log-error="[COLOR=#ff8c00]c:\xampp\mysql\backup\test\[/COLOR]dumperrors.txt" %%F > "[COLOR=#ff8c00]c:\xampp\mysql\backup\test\[/COLOR]%%F.%backupdate%.sql"
    
    )
    
    
    :: Compresser les .sql  en un seul .zip (ici dans [COLOR=#ff8c00]c:\xampp\mysql\backup\test\zip\backupfiles\[/COLOR]) :
    
    @echo.
    @echo.
    @echo.
    @echo PASSE 2 : compression des .sql ------
    @echo.
    
    "[COLOR=#ff8c00]c:\xampp\mysql\backup\test\zip\[/COLOR]7za.exe" a -tzip "[COLOR=#ff8c00]c:\xampp\mysql\backup\test\zip\backupfiles\[/COLOR]FullBackup.%backupdate%.zip" "[COLOR=#ff8c00]c:\xampp\mysql\backup\test\[/COLOR]*.sql"
    
    @echo.
    @echo ----- C'est fini !
    cd\

    Copiez-collez ce code dans un éditeur de texte neutre ('Bloc Notes' ou équivalent). Nommez-le et enregistrez-le où vous voulez. Par exemple nommez-le mysqlbackup.bat, et enregistrez-le à la racine du disque dur.

    Pour exécuter ce code, il faut se placer dans une console DOS (sous XP : Démarrer > Programmes > Accessoires > Invite de commandes), puis se placer sur le dossier dans lequel se trouve le batch. Si votre mysqlbackup.bat est à la racine du disque dur, il faudra peut-être remonter jusque là en utilisant la commande : cd\ (cd aussitôt suivi d'un antislash).


    Il est ensuite possible de prévoir que le batch fasse le ménage afin que les fichiers (.zip et / ou .spl) ne s'accumulent pas.

    Le code suggéré par le lien transmis par Jisse à cet effet (but with a french translation !) :

    Code:
    :: Suppression des .sql :
    
    @echo.
    @echo Supprimer les fichiers .sql :
    @echo.
      
    del "[COLOR=#ff8c00]c:\xampp\mysql\backup\test\[/COLOR]*.sql"
    
    @echo.
    @echo OK --------
    @echo.
    
    :: Reste à faire le ménage dans le dossier des .zip :
    
    @echo.
    @echo Supprimer les vieux fichiers .zip (plus de 30 jours) :
    @echo.
    
    Forfiles -p [COLOR=#ff8c00]c:\xampp\mysql\backup\test\zip\backupfiles\[/COLOR] -s -m *.* -d -30 -c "cmd /c del /q @path"
    
    @echo.
    @echo.
    @echo.
    @echo Le ménage est fait ! --------
    @echo.
    NB : Il se peut que la commande Forfiles ci-dessus ne soit pas reconnue par votre système, tout simplement parce que le petit fichier forfiles.exe est absent. => Il suffit de le télécharger chez l'aMicrosoft, ici : ftp://ftp.microsoft.com/ResKit/y2kfix/x86/, et de l'enregistrer dans c:\WINDOWS\system32. Si vous souhaitez comprendre et / ou modifier la syntaxe, vous pouvez consulter la page Microsoft dédiée.


    Et aussi, en prime : il est possible d'envoyer votre sauvegarde en dehors de votre disque dur local, sur un espace web distant par ftp. Vous trouverez le nécessaire en toute fin du code indiqué par Jisse.



    Cordialement,




    PhilJ


    Dernière édition par PhilJ à 02/07/2012, 18h47

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par PhilJ Voir le message
    ...Oui, et j'ai installé une solution 'fingers-in-the-nose' sur les sites distants qui me satisfait pleinement. Mon problème concerne exclusivement mes BDD en local, qui sont sont sous Windows (ben oui, j'avoue — miiiiiiiiiiiisère ! — je travaille avec « ça » avec mon PC).
    Solution absolue, installer VirtualBox ou VMWare et une machine virtuelle linux pour le développement local

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par RobertG Voir le message
    Sous Windows, n'importe quel outil de sauvegarde peut sauvegarder automatiquement le dossier complet des bases, sans faire un dump.
    Toute copie binaire de l'ensemble des bases IMPLIQUE OBLIGATOIREMENT que MySQL soit stoppé, sous peine de perte d'intégrité des données, et ce quel que soit le système d'exploitation, sauf à utiliser mysqldump ou mysqlhotcopy.

    Envoyé par RobertG Voir le message
    Tu as aussi, que ce soit en ligne ou en local, LazyDbBackup qui peut sauvegarder les bases sans envoyer le fichier par mail, mais le placer dans un répertoire défini (avec gestion complémentaire par LDBchecker).
    Lui ne réponds pas à la problématique de sauver n bases de données, probablement pour certaines sans aucun lien avec Joomla!

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par selige Voir le message
    Bonjour,

    En addition, voila une chose à lire :
    http://www.redolivedesign.com/utah-w...p-for-windows/
    Ben voilà une piste

    Laisser un commentaire:


  • RobertG
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Sous Windows, n'importe quel outil de sauvegarde peut sauvegarder automatiquement le dossier complet des bases, sans faire un dump.
    Tu as aussi, que ce soit en ligne ou en local, LazyDbBackup qui peut sauvegarder les bases sans envoyer le fichier par mail, mais le placer dans un répertoire défini (avec gestion complémentaire par LDBchecker).

    Laisser un commentaire:


  • selige
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Bonjour,

    En addition, voila une chose à lire :

    Laisser un commentaire:


  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par jisse03 Voir le message
    La solution Unix, on l'a depuis longtemps, vu que plus de 70% des serveurs internet sont sous Linux

    ...Oui, et j'ai installé une solution 'fingers-in-the-nose' sur les sites distants qui me satisfait pleinement. Mon problème concerne exclusivement mes BDD en local, qui sont sont sous Windows (ben oui, j'avoue — miiiiiiiiiiiisère ! — je travaille avec « ça » avec mon PC).


    Cordialement,




    PhilJ

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    La solution Unix, on l'a depuis longtemps, vu que plus de 70% des serveurs internet sont sous Linux

    Laisser un commentaire:


  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par jisse03 Voir le message
    Si une âme charitable avec un Windows serveur pouvait étendre la version Windows, il rendrait service

    ...Ouiiiii !! Vu le temps passé à faire ces (maudites) sauvegardes, je promets... ahem... disons : un carambar / mois à qui saurait fournir ici une solution Windows adaptée .


    D'avance merci,




    PhilJ

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par PhilJ Voir le message
    *En l'occurrence : capacité à détecter le nombre de BDD à sauvegarder tout seul comme un grand.

    ...Oui, ce serait vraiment utile pour nous autres misérables windowsiens !

    En attendant un hypothétique solution Windows, j'imagine qu'il faut renseigner autant de lignes "..<username> -p<password> <databasename>..." qu'il y a de bases. J'ai bon ?
    Oui, exactement.

    N'ayant pas de windows Server sous la main, je ne peux réaliser l'équivalent exact du script Unix (qui lui fonctionne sur mes serveur en tant que cron job, toutes les nuits).

    Si une âme charitable avec un Windows serveur pouvait étendre la version Windows, il rendrait service

    Laisser un commentaire:


  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Bonjour,


    Envoyé par jisse03 Voir le message
    [...] il ne s'agit pas de script PHP, mais de scripts système (batch windows, shell script cron Unix).
    ...J'avais des doutes, raison de ma question. Donc .BAT.


    mysqldump est en effet un utilitaire mysql permettant le dump d'une base sans arrêter le serveur.
    ...OK.


    [...] si un connaisseur Windows étend le script pour lui donner la même généricité* que la version Unix, il faut le publier ici, ça servira à d'autres
    *En l'occurrence : capacité à détecter le nombre de BDD à sauvegarder tout seul comme un grand.

    ...Oui, ce serait vraiment utile pour nous autres misérables windowsiens !

    En attendant une hypothétique solution batch pour Windows, j'imagine que, dans le batch, il faut renseigner autant de lignes "..<username> -p<password> <databasename>..." qu'il y a de bases à sauvegarder. J'ai bon ?


    Encore merci,




    PhilJ
    Dernière édition par PhilJ à 01/07/2012, 14h56

    Laisser un commentaire:


  • jisse03
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Envoyé par PhilJ Voir le message
    Il s'agit bien d'un script PHP : oui ?
    Non, il ne s'agit pas de script PHP, mais de scripts système (batch windows, shell script cron Unix).

    Envoyé par PhilJ Voir le message
    Apparemment, il n'est pas nécessaire d'arrêter MySQL (mysqldump...) avant de le lancer : j'ai bon ?
    mysqldump est en effet un utilitaire mysql permettant le dump d'une base sans arrêter le serveur.

    Envoyé par PhilJ Voir le message
    Est-il capable de déterminer combien de bases de données doivent être sauvegardées tout seul comme un grand (et d'un seul coup d'un seul), ou bien faut-il lui indiquer explicitement les informations utiles sur autant de lignes (...<username> -p<password> <databasename>...) qu'il y a de bases différentes à traiter ?
    Si, comme sur les serveurs importants, on utilise le user root mysql (ou son remplaçant, puisque souvent on supprime carrément root par sécurité), la version Unix utilise
    Code:
    DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
    pour récupérer la liste des bases à sauvegarder, mais cette commende ne fonctionnant pas sous Windows, il faudrait créer un équivalent batch.
    N'utilisant pas Windows, je n'ai pas cherché à créer de boucles batch pour ce système, mais si un connaisseur Windows étend le script pour lui donner la même généricité que la version Unix, il faut le publier ici, ça servira à d'autres

    Laisser un commentaire:


  • PhilJ
    a répondu
    Re : Sauvegarder plusieurs bases de données d'un seul coup d'un seul

    Bonjour,


    Merci pour ces particules chez dépioteur . Je vais tester la particule Windows en local et je fais remonter le résultat.

    Juste quelques questions de plus avant de procéder :

    1. Il s'agit bien d'un script PHP : oui ?
    2. Apparemment, il n'est pas nécessaire d'arrêter MySQL (mysqldump...) avant de le lancer : j'ai bon ?
    3. Est-il capable de déterminer combien de bases de données doivent être sauvegardées tout seul comme un grand (et d'un seul coup d'un seul), ou bien faut-il lui indiquer explicitement les informations utiles sur autant de lignes (...<username> -p<password> <databasename>...) qu'il y a de bases différentes à traiter ?


    D'avance merci,



    PhilJ
    Dernière édition par PhilJ à 30/06/2012, 21h16

    Laisser un commentaire:

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X