Потеряна связь с MySQL сервером во время запроса при выводе таблицы (сценарий Perl) - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь сделать 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 теряет связь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...