EquinoxeFR

Sauvegarder ses bases Mysql sous linux

by EquinoxeFR on mar.20, 2007, under Linux

Voici une petite amélioration qui fonctionnera avec mysqldump afin de sauvegarder toutes vos bases dans des fichiers indépendants.

Ce script 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/ -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

:,
No comments for this entry yet...

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!