backup sql, importer un fichier dump pour recréer une table sql

Discussion dans 'Administration d'un site Web' créé par sagat006, 31 Mars 2014.

  1. sagat006
    sagat006 Nouveau WRInaute
    Inscrit:
    17 Mars 2014
    Messages:
    5
    J'aime reçus:
    0
    Bonjour à tous,

    Dans mon projet (et besoin) de backup de sauvegarde, je me pose certaines questions, notamment d'importation de fichier_dump pré produit pour recréer les tables désirées

    Je m'explique: je veux par exemple sauvegarder ma table 'membres', les infos inscrites sur celle-ci sont censées ne jamais être modifiées une fois l'utilisateur inscrit.

    Je compte donc faire une sauvegarde quotidienne de cette table mais uniquement à partir d'une certaine ligne censée représenté les nouveaux inscrits quotidien. Comme en théorie, l'utilisateur pourra vouloir modifier son mail, son password en cas d'oubli, se désinscrire... alors là je compte aussi faire une sauvegarde hebdomadaire de toute la table

    Dans le cas où je devrais récupérer mes sauvegardes, je compte donc utiliser la dernière sauvegarde hebdomadaire auquel je rajouterai les sauvegardes quotidiennes des jours manquants

    Or c'est ici que se trouve mon pb, si pour recréer une table entière avec le fichier dump hebdomadaire, je fais simplement
    => mysql -u user -ppass ma_bdd --tables membres < fichier_dump_hebdomadaire

    Comment y rajouter les lignes supplémentaires contenues dans les fichiers_dump quotidiens ??

    Ce que ma logique toute perso me pense à faire est-il correct ?
    => mysql -u user -ppass ma_bdd --tables membres -w"id>x" < fichier_dump_quotidien

    En attendant vos avis et conseils
    merci d'avance
     
  2. bossboss
    bossboss WRInaute occasionnel
    Inscrit:
    28 Août 2004
    Messages:
    340
    J'aime reçus:
    0
    tu te compliques la vie? pourquoi pas un dump complet de la table?
     
  3. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Hello,

    backup quotidiens + logs binaires, ça semble effectivement plus simple et fiable que d'aller injecter des règles «métier» dans la procédure de sauvegarde.
     
  4. sagat006
    sagat006 Nouveau WRInaute
    Inscrit:
    17 Mars 2014
    Messages:
    5
    J'aime reçus:
    0
    salut,

    oui j'entend bien qu'un backup complet de la table est bien plus simple, mais pour reprendre mon exemple:

    supposons que ma table membres possède des millions d'entrée à raison de plusieurs colonnes par lignes et qu'elle pèse donc son poids (quelques Go, ça reste une hypothèse), si je dois faire un dump complet de cette table tous les soirs (ainsi que d'autre tables en parallèle) et en conserver les sauvegardes des 15 derniers jours, ça va devenir une vrai usine à gaz.

    Quand en plus, la table membre est en théorie très peu modifiée une fois les membres inscrits, ça me ferait beaucoup de doublons et donc d'espace de sauvegarde utilisé pour rien. D'où mon idée de sauvegarde complète une fois par semaine et partielle (les derniers inscrits) chaque jour

    Le pb c l'ajout des backup quotidiens après avoir restauré la dernière sauvegarde complète de ma table hebdomadaire.

    En imaginant un simple système D, on peut s'en sortir assez facilement :

    je créé une table membres1 correspondant à la dernière save complète hebdomadaire, je créé autant de tables membres2, membres3... que de save partielle et je merge toutes les tables dans ma table finale membres qui est celle d'origine et utilisée en production

    Je dois juste vérifier qu'il n'y ait aucune ligne en doublon au cas où, en regardant les id de chacune des premières entrés des tables partielles et les comparer aux derniers id de celles précédentes, pour les supprimer au cas où.

    Je pense que ce système D est logique et faisable, mais biensur ça reste un système D, alors s'il existait un moyen possible de rajouter des entrées à une table directement à partir d'un fichier dump sans avoir à créer une nouvelle table et de faire un merge, ce serait cool, sinon tant pis

    En attendant vos avis, critiques et autres,
    merci d'avance
     
  5. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 546
    J'aime reçus:
    0
    Bonsoir,

    si la BDD devient vraiment conséquente (1Go ?), de toutes façons tu n'utiliseras plus ce type de backup et passera à des outils plus adaptés (xtrabackup, mylvmbackup, etc).
    Dès qu'il y a un peu de trafic, les problématiques d'intégrité des données te font oublier la plupart des solutions à coup de dump.

    Bref, à mon avis il n'est pas judicieux de chercher à compliquer une procédure de sauvegarde (c'est même dangereux en terme d'oubli / capacité de restauration), d'autant plus si c'est pour résoudre un problème supposé futur, qui te forcera de toutes façons à changer de solution avant.

    Maintenant si c'est juste un exercice de style, il faudrait déjà voir si mysqldump accepte de filtrer les résultats (à ma connaissance ce n'est pas le cas). Un man mysqldump sur ton serveur t'en dira beaucoup plus.
    Et si mysqldump ne propose rien du genre, tu peux faire ça toi même, ne serait-ce qu'en utilisant la syntaxe SELECT ... INTO DUMPFILE ....
     
  6. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    3 747
    J'aime reçus:
    82
    Tu dis que tes sauvegardes quotidiennes ne débuteront qu'à partir d'un certain id

    Donc au bout de 6 jours tu devras restaurer la sauvegarde hebdo que tu merges avec les 5 ou 6 sauvegardes quotidiennes. Et dans l'histoire tu perd toutes les mises à jour effectuées sur des id qui n'ont pas été créés dans la semaine.

    Pourquoi n'utilises-tu pas une date de mise à jour dans ta base ?
    Tu fais tes sauvegardes hebdo et ensuite, chaque jour, tu sauvegarde tout ce qui a été modifié depuis la derniere sauvegarde complete.
    En cas de crash et de restauration au bout du 6° jour, tu auras en fait qu'à restaurer la sauvegarde hebdo puis d'appliquer les mises à jour (création ou modification) de la dernière sauvegarde journalière et uniquement de la dernière. Tu peux même te passer d'avoir 6 sauvegardes, il suffit d'alterner sur deux versions : la dernière et l'avant dernière (au cas où la dernière serait endommagée).
     
  7. sagat006
    sagat006 Nouveau WRInaute
    Inscrit:
    17 Mars 2014
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,

    je reviens à vous avec une solution simple, bien qu'elle ne prend pas en compte les modifications effectuées sur la sauvegarde hebdomadaire. Il faudrait que je me penche sur les log binaires pour cela

    Je rappelle mon idée: faire 1 sauvegarde hebdomadaire puis 1 save quotidienne de chaque nouvel enregistrement

    Je comptais pour cela créer des tables différentes à partir des différents fichiers dump et faire un merge du tout pour obtenir ma table principale. C'est un peu compliqué je dois vous l'avouer.

    En fait il existe avec mysqldump une option permettant de ne pas recréer systématiquement une table, ainsi si on fait un dump avec cette option, quand on importe le fichier.sql à la suite du précédent on obtient tout simplement notre table principale sans rien faire d'autre

    Pour résumer:

    1) je fais un save hebdo de toute la table:

    Code:
    mysqldump -u root -ppassword ma_base --tables ma_table  > $chemin_backup    
     // pour table principale (save hebdo)
    2) puis des saves quotidiennes en précisant l'option --no-create-info, ainsi que l'id où la date du dernier précédant save

    Code:
    mysqldump -u root -ppassword ma_base --tables ma_table -w'id>5000' --no-create-info > $chemin_backup2
    mysqldump -u root -ppassword ma_base --tables ma_table -w'id>9000' --no-create-info > $chemin_backup3
    ...
    3) on importe juste les fichiers dans l'ordre et tout s'emboîte, pas besoin de merger les tables ou autres

    Code:
    mysql -h host -u user -ppass base_de_donnees --tables ma_table < fichier_dump1
    // la save hebdo en premier !! Le reste dans l'ordre chronologique
    
    mysql -h host -u user -ppass base_de_donnees --tables ma_table < fichier_dump2
    mysql -h host -u user -ppass base_de_donnees --tables ma_table < fichier_dump3
    ...
    En attendant de me renseigner sur les fichier log binaires pour n'enregistrer que les modifications éventuelles, cela me convient

    En attendant vos avis,
    merci d'avance
     
  8. Oexo FRANCE
    Oexo FRANCE Nouveau WRInaute
    Inscrit:
    2 Avril 2014
    Messages:
    10
    J'aime reçus:
    0
    J'ai je pense mieux que votre script, créez un bash nommé backup-bdd dans /usr/bin/ et placez-y:
    Code:
    #!/bin/bash
    
    rm -R /home/backup-bdd/*
    echo "# Dossier /home/backup-bdd/ néttoyé"
    DATE=`date +%y_%m_%d`
    LISTEBDD=$( echo 'show databases' | mysql -uUTILISATEUR -pMOTDEPASSE )
    for SQL in $LISTEBDD
    do
    if [ $SQL != "information_schema" ] && [ $SQL != "mysql" ] && [ $SQL != "Databa$
    mysqldump -uroot -pMOTDEPASSE $SQL | gzip > /home/backup-bdd/$SQL"_mysql_"$DATE.sq$
    fi
    done
    echo "# Sauvegarde des bdd faite"
    
    Replacez UTILISATEUR et MOTDEPASSE par vos identifiants sql. Et créer un dossier dans /home/ nommé backup

    Ensuite créer une tache cron
    Code:
    contrab -e
    et rajouter:
    Code:
    00 00 * * * /usr/bin/backup-bdd
    Vous aurez maintenant vos backups dans le dossier /home/backup/ compressée et la sauvegarde sera journalière a 00:00.
    En espérant que cela ai pu vous aider ^^
     
Chargement...
Similar Threads - backup sql importer Forum Date
Backup sql sur machine client Développement d'un site Web ou d'une appli mobile 24 Janvier 2014
Backup Site web Administration d'un site Web 31 Juillet 2016
Backup complet de de serveur dédié Administration d'un site Web 28 Novembre 2011
La version de backup-manager que vous utilisez Administration d'un site Web 19 Mars 2011
Logiciel Windows pour planifier le téléchargement des backup d'un dédié Administration d'un site Web 7 Mars 2011
Vos avis, critiques, conseils sur mon script de backup Administration d'un site Web 15 Février 2011
Google Message Continuity : un service Web de backup pour attaquer Exchange Google : l'entreprise, les sites web, les services 11 Décembre 2010
backup de base de données ou est le fichier ?? Administration d'un site Web 14 Juin 2010
Un pirate a uploadé le fichier l_backuptoster.php sur mon site Administration d'un site Web 17 Mars 2010
Backup Développement d'un site Web ou d'une appli mobile 21 Juin 2009
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice