Voici une petite amélioration qui fonctionnera avec mysqldump afin de sauvegarder toutes vos bases dans des fichiers indépendants.
Ce script perl vous permet de sauvegarder chaque base de votre serveur mysql dans un fichier indépendant ce qui facilite grandement la restauration d’une seule base.
#! /usr/bin/perl -w use strict; use DBI; my @EXCLUDE = ("snort" , "syslog"); my $PATH = "/data/backup"; my $HOST = "localhost"; my $USER = "backup"; my $PASSWD = "xxxx"; my $REQUEST; my ($DB) = DBI->connect("dbi:mysql:host=$HOST",$USER,$PASSWD) or die "MYSQL -> $DBI::errstr"; $REQUEST = $DB->prepare("SHOW DATABASES;"); $REQUEST->execute; while (my $hash_ref=$REQUEST->fetchrow_hashref()) { my @tmp = grep (/$hash_ref->{"Database"}/,@EXCLUDE); if ( $#tmp) { my ($FILENAME)="$PATH/DUMP_" . $hash_ref->{"Database"}.".sql"; print "Backup " . $hash_ref->{"Database"} . " to $FILENAME\n"; `export LD_LIBRARY_PATH=;/usr/bin/mysqldump -u $USER -p$PASSWD -C -F -B $hash_ref->{"Database"} > $FILENAME`; } else { print "Excluding " . $hash_ref->{"Database"} . "\n"; } } $REQUEST->finish; $DB->disconnect;
Pour utiliser ce script, un utilisateur (ici backup) doit avoir les droits suivants sur votre serveur mysql:
SELECT, RELOAD, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES
Vous devez aussi disposer des modules MySQL