Sauvegarder ses bases Mysql sous linux

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

Laisser un commentaire

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

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.