mettre en place un cron job pour sauvegarder MySQL

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

trustno1
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 395
Inscription: 7 Aoû 2005

mettre en place un cron job pour sauvegarder MySQL

Message le Dim Jan 07, 2007 0:24

Bonjour,
comment mettre en place un cron pour sauvegarder bd mysql tous les x jours.

merci

nnx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 358
Inscription: 22 Jan 2003

Message le Dim Jan 07, 2007 0:58

Fais une recherche sur le forum : la question a été souvent abordée, que tu sois sur un mutu ou un dédié.


kylliox
WRInaute discret
WRInaute discret
 
Messages: 57
Inscription: 20 Oct 2006

Message le Dim Jan 07, 2007 1:19

Aller pour commencer dans la bonne humeur voila ce que tu peut faire.

Dans my.cnf j'ai tu mets ca pour les logs:
Code: Tout sélectionner
log             = /var/log/mysql/mysql.log
log-bin                 = /var/log/mysql/mysql-bin.log
log-error       = /var/log/mysql/mysqld.err
log-update      = /var/log/mysql/bdd.log


ensuite tu fait un script bash journalier qui récupére les logs du serveurs (il y a toutes les transactions de la journée dedans)
Code: Tout sélectionner
tar -cpPzvf bdd.tar.gz `find /var/log/mysql -type f -print | grep "bdd."`


de temps en temps un dump de ta base et en même temp une petite relance des logs :
Code: Tout sélectionner
for i in `find /var/lib/mysql/* -type d`; do
    a=`echo $i | cut -d / -f 5`
    mysqldump -u dump -pdumppass --opt $a | gzip > bdd.gz
done
rm -rf /var/log/mysql/bdd*
mysqladmin -u flush -pflushpass flush-logs


bien sur l'user qui fait ces manips dans cron doit avoir les bon droits.
dans mysql il faut créer un user flush et un autre dump qui n'ont aucun droit sauf les taches pour lesquels ils sont assignées.

Voila

billyboylindien
WRInaute impliqué
WRInaute impliqué
 
Messages: 578
Inscription: 28 Fév 2005

Message le Dim Jan 07, 2007 9:57

J'utilise ça:
http://www.billyboylindien.com/blog/lin ... l-par-ftp/

et ca roule tranquilou ;)

++

code
WRInaute impliqué
WRInaute impliqué
 
Messages: 648
Inscription: 29 Juil 2005

Message le Dim Jan 07, 2007 11:59

Personnellement j'utilise ceci et c'est vraiment simple et efficace :

Pour une sauvegarde quotidienne :
Code: Tout sélectionner
#!/bin/sh
  # sauvegarde des bases de données hebdommadaire
  # A modifier:
  USER=xxxxx
  PASS=xxxxxxxxxxxx
  DESTINATION=/backup/daily/mysql

  DATE=`date +%Y-%m-%d`
  TIME=`date +%H:%M`
  DAY=`date +%d`
  DEL=`TZ=CST+24 date +%Y-%m-%d`

  # backup de la semaine
  mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$TIME.$DATE.sql.gz

//répéter les 2 lignes précédentes autant de fois que de bases à sauvegarder

  # efface le backup de la veille
  rm -rf $DESTINATION/*.$DEL.sql.gz



Cela se passe donc en 2 temps : Sauvegarde de (des) bases et suppression des sauvegardes de la veille (inutile de garder plus d'une journée car je fais une sauvegarde toutes les 2 heures + une sauvegarde hebdomadaire et que ce sont des tables qui ont un très grand nombre d'enregistrement par jour donc une sauvegarde de 3 jours n'a aucun intérêt)


Backup hebdommadaire pour les tables qui ont peu d'enregistrements
Code: Tout sélectionner

#!/bin/sh
  # sauvegarde des bases de données hebdommadaire
  # A modifier:
  USER=xxxx
  PASS=xxxx
  DESTINATION=/backup/weekly/mysql

  DATE=`date +%Y-%m-%d`
  WEEK=`date +%W`
  let "DEL=$WEEK-2"

  # backup de la semaine
  mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$WEEK.$DATE.sql.gz

  # efface le backup vieux de 2 semaines
  rm -rf $DESTINATION/*-$DEL.*.sql.gz


Pour la tâche cron, éditer le fichier crontab et ajouter ceci :

Code: Tout sélectionner
0 0,6,9,12,15,18,21 * * * root /usr/bin/backup-daily-bdd 2>&1 > /dev/null   # Sauvegarde quotidienne des bases de données
1 0 * * 0 root /usr/bin/backup-weekly-bdd 2>&1 > /dev/null   # Sauvegarde hebdomadaire des bases de données


Dans le premier cas, les bases sont sauvées tous les jours à 00h00, 6h00, 9h00 etc.. dans le 2eme cas, à minuit et 1 minute tous les lundis matins

bigs32
WRInaute impliqué
WRInaute impliqué
 
Messages: 517
Inscription: 8 Mai 2006

Message le Dim Jan 07, 2007 15:36

code a écrit:Personnellement j'utilise ceci et c'est vraiment simple et efficace :

Pour une sauvegarde quotidienne :
Code: Tout sélectionner
#!/bin/sh
  # sauvegarde des bases de données hebdommadaire
  # A modifier:
  USER=xxxxx
  PASS=xxxxxxxxxxxx
  DESTINATION=/backup/daily/mysql

  DATE=`date +%Y-%m-%d`
  TIME=`date +%H:%M`
  DAY=`date +%d`
  DEL=`TZ=CST+24 date +%Y-%m-%d`

  # backup de la semaine
  mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$TIME.$DATE.sql.gz

//répéter les 2 lignes précédentes autant de fois que de bases à sauvegarder

  # efface le backup de la veille
  rm -rf $DESTINATION/*.$DEL.sql.gz



Cela se passe donc en 2 temps : Sauvegarde de (des) bases et suppression des sauvegardes de la veille (inutile de garder plus d'une journée car je fais une sauvegarde toutes les 2 heures + une sauvegarde hebdomadaire et que ce sont des tables qui ont un très grand nombre d'enregistrement par jour donc une sauvegarde de 3 jours n'a aucun intérêt)


Backup hebdommadaire pour les tables qui ont peu d'enregistrements
Code: Tout sélectionner

#!/bin/sh
  # sauvegarde des bases de données hebdommadaire
  # A modifier:
  USER=xxxx
  PASS=xxxx
  DESTINATION=/backup/weekly/mysql

  DATE=`date +%Y-%m-%d`
  WEEK=`date +%W`
  let "DEL=$WEEK-2"

  # backup de la semaine
  mysqldump -u $USER --password=$PASS nomdelabase | gzip > $DESTINATION/nomdelabase-$WEEK.$DATE.sql.gz

  # efface le backup vieux de 2 semaines
  rm -rf $DESTINATION/*-$DEL.*.sql.gz


Pour la tâche cron, éditer le fichier crontab et ajouter ceci :

Code: Tout sélectionner
0 0,6,9,12,15,18,21 * * * root /usr/bin/backup-daily-bdd 2>&1 > /dev/null   # Sauvegarde quotidienne des bases de données
1 0 * * 0 root /usr/bin/backup-weekly-bdd 2>&1 > /dev/null   # Sauvegarde hebdomadaire des bases de données


Dans le premier cas, les bases sont sauvées tous les jours à 00h00, 6h00, 9h00 etc.. dans le 2eme cas, à minuit et 1 minute tous les lundis matins


ca a l'air super tout ca.mais pour un novice c'est pas tres clair comme explication
faut copier le code en quelle extention ?
finallement il y a combien de fichiers en tout

pensez à des gars qui connaissent pas grande chose , comme moi par exemple .

merci les gars

objectifweb
WRInaute discret
WRInaute discret
 
Messages: 130
Inscription: 6 Oct 2004

Message le Dim Jan 07, 2007 20:07

Bonjour

Il y a plus simple, tu vas sur webcron.org qui est un cron mais par le web, donc sans chipoter à ton serveur, et en plus ils fournissent un script qui sauve tes bases dans un répertoire, donc tu sauves la totalité en ftp par la suite, et tu as toujours plusieurs versions en ligne de ta DB

Patrick


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité