Я пытаюсь сделать Perl скрипт, который экспортирует базу данных через mysqldump. Первый mysqldump работает правильно, но второй возвращает: mysqldump: Ошибка 2013: Потеря соединения с MySQL сервером во время запроса при выводе таблицы .
#!/usr/bin/perl
use strict;
# Abrir fichero
my $file = "/root/doBackups.conf";
my ($bkpdir, $vhost, $excludes, $copies, $id);
my $estado;
print "Autobackup script \n";
if (! -e $file){
print "Introduzca el id de la maquina:\n";
$id = <STDIN>;
chop $id;
open F1, ">$file" or die "No se puede abrir $file";
print F1 "BKPDIR: /NAS\n";
print F1 "VHOSTS: /usr/eBDAS/conf/vhosts.conf\n";
print F1 "KEEP: 31\n";
print F1 "ID: $id\n";
close F1;
$bkpdir = "/NAS";
$vhost = "/usr/eBDAS/conf/vhosts.conf";
$copies = 31;
}else{
print "\nObteniendo datos para efectuar el BackUp...\n";
open (FILE, "< $file");
# Mientras tenga más lineas que leer...
while (<FILE>){
my $line = $_;
# Si la linea empieza por... nos guardamos lo siguiente...
if ($line =~ /^BKPDIR: (.*)/){
$bkpdir = $1;
chop $bkpdir;
}elsif ($line =~ /VHOSTS: (.*)/){
$vhost = $1;
}elsif ($line =~ /KEEP: (\d+)/){
$copies = $1;
}elsif ($line =~ /EXCLUDE: (.*)/){
my $exclude = $1;
foreach (split " ",$exclude){
$excludes->{$_} = 1;
}
}elsif ($line =~ /ID: (.*)/){
$id = $1;
}else{
print "Bad file format\n";
exit;
}
}
close FILE;
}
if (defined $bkpdir && defined $vhost){
my ($NomBackup, $TamBackup, $TamFinal);
my $ebd;
# Buscamos las instancias de las que se hace backup...
open (VHOST, "< $vhost");
while (<VHOST>){
# Siguiente si la linea esta comentada...
next if /^#/;
# Siguiente a no ser que empieze por "PerlSetVar eBDSite"
next unless /PerlSetVar eBDSite (.*)/;
$ebd->{$1} = 1;
}
close VHOST;
foreach (sort keys %$ebd){
next if exists $excludes->{$_};
my $instance = $_;
#Creando el directorio dentro de /NAS;
my $directorio = "$bkpdir/$instance"."_backup";
if (! -e '$directorio') {
print "\nCreando directorio $instance"."_backup\n";
mkdir($directorio) or die "No se ha podido crear el directorio $directorio\n";
}
#Creando backup base de datos;
print "\nCreando backup DB eBD...\n";
my @db = ("mysqldump "."eBD$instance"." > $directorio/eBD$instance.sql");
system(@db);
print "\nCreando backup DB usuario...\n";
my @db = ("mysqldump "."eBD$instance"."_data > $directorio/eBD$instance"."_data.sql");
system(@db);
}
}
Если я выполню mysqldump eBDmmtest_data > /NAS/mmtest_data/eBDmmtest_data.sql на оболочке работает отлично.
Как я могу это исправить? Может быть, мне нужно назначить какое-то время ожидания или что-то еще.
Спасибо.
ОБНОВЛЕНИЕ
Диск, на котором я сохраняю резервную копию, очень медленный, и это почему Mysql теряет связь.