Script : Sauvegarde de bases MySQL

Ce script sauvegarde les bases de données MySQL en générant dans le répertoire « BACKUPDIR » un fichier par base de donnée.

Les fichiers générés sont au format « BACKUPDIR/DATE.NOMBASE.sql ».

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
 
# Script de sauvegarde des bases MySQL.
#
# Sauvegarde les bases de données MySQL sous 
# sous forme d'un fichier par base.
# 
 
# Définition des variables de connexion :
MYSQLUSER="root" ;
MYSQLPASS="Mot de passe" ;
MYSQLHOST="localhost" ;
MYSQLPORT="3306" ;
 
# Options MySQL Dump :
MYSQLDUMPOPTS="--add-drop-database --add-drop-table --create-options"
 
# Définition du répertoire de sauvegarde :
BACKUPDIR="/tmp/mysql" ;
 
# Définition des binaires :
MYSQL="/usr/bin/mysql" ;
MYSQLDUMP="/usr/bin/mysqldump" ;
MYSQLADMIN="/usr/bin/mysqladmin" ;
MKDIR="/bin/mkdir" ;
 
DATE="/bin/date" ;
 
# Format de la date sans espaces (voir man date) :
# Exemple "%Y%m%d"
DATEFORMAT="%s" ;
 
## FONCTIONS
 
# Fonction de sortie de script :
die() {
        echo $@ >&2 ;
        exit 1 ;
}
 
# Fonction de test des binaires :
check_binaries() {
        [ -x ${MYSQL} ] || die "File \"${MYSQL}\" not found ! Check definition in ${0}." ;
        [ -x ${MYSQLDUMP} ] || die "File \"${MYSQLDUMP}\" not found ! Check definition in ${0}." ;
        [ -x ${MYSQLADMIN} ] || die "File \"${MYSQLADMIN}\" not found ! Check definition in ${0}." ;
        [ -x ${DATE} ] || die "File \"${DATE}\" not found ! Check definition in ${0}." ;
        [ -x ${MKDIR} ] || die "File \"${MKDIR}\" not found ! Check definition in ${0}." ;
}
 
# Fonctions de sauvegarde :
backup() {
        ${MYSQLADMIN} -s --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} --password=${MYSQLPASS} ping 2>&1 > /dev/null ;
        [ $? -eq 0 ] || die "Impossible to connect ${MYSQLHOST}:${MYSQLPORT}." ;
#       Si le répertoire des sauvegardes n'existe pas il est créé :
        [ ! -d ${BACKUPDIR} ] && ${MKDIR} -p ${BACKUPDIR} ;
#       Pour chaque base,
        for db in `${MYSQL} --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} --password=${MYSQLPASS} -sBe 'show databases'` ; do
#               Création d'un fichier de dump au format BACKUPDIR/DATE_FORMAT_DATEFORMAT.NOM_BASE.sql
                ${MYSQLDUMP} ${MYSQLDUMPOPTS} --host=${MYSQLHOST} --port=${MYSQLPORT} -u ${MYSQLUSER} \
                        --password=${MYSQLPASS} ${db} --result-file="${BACKUPDIR}/$(${DATE} +${DATEFORMAT}).${db}.sql" ;
        done
}
 
# Main corp du script :
check_binaries ;
backup ;

Télécharger le script « mysql-bd-backup ».

Exemple d’utilisation
fhh@mafalda ~/MySQL-DB-backup $ ls /tmp/
fhh@mafalda ~/MySQL-DB-backup $ ./mysql-bd-backup 
Impossible to connect localhost:3306.
fhh@mafalda ~/MySQL-DB-backup $ vi mysql-bd-backup
# Renseignement du mot de passe de connexion 
fhh@mafalda ~/MySQL-DB-backup $ ./mysql-bd-backup 
fhh@mafalda ~/MySQL-DB-backup $ ls -l /tmp/mysql/
total 35236
...
-rw-r--r-- 1 fhh users     1229 2009-10-01 11:43 1254390197.information_schema.sql
...
-rw-r--r-- 1 fhh users   411537 2009-10-01 11:43 1254390199.mysql.sql
...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *