Я использую следующий perl-скрипт для резервного копирования моих баз данных:
#!/usr/bin/perl
use strict;
use DBI;
my $dbh = DBI->connect( "dbi:mysql:database=;mysql_client_found_rows=0;host=your.database.host", "username", "password", {RaiseError => 1});
my $databases = $dbh->selectcol_arrayref('SHOW databases;');
foreach my $t (@{$databases}) {
system('/usr/local/bin/mysqldump -h your.database.host --add-drop-database --add-drop-table --add-locks --extended-insert=false --databases --allow-keywords -c -e -f -u username --password=password \''.$t.'\' > /path/to/backupfiles/'.$t.'.sql');
print "$t done\n";
sleep(2);
}
Команда mysql-dump:
/ usr / local/ bin / mysqldump -h your.database.host --add-drop-database --add-drop-таблица --add-locks --extended-insert = false --database --allow-Keywords -c -e -f -u username --password = пароль 'databasename'> /path/to/backupfiles/databasename.sql
Результатом являются одиночные операторы вставки для всей таблицы.Вы должны извлечь строки, которые вы хотите восстановить.Поскольку вы не знаете, какой ряд будет поврежден, вам понадобятся все.Чтобы восстановить одну строку, просто найдите ее в файле резервной копии и выполните команду.
Мне было очень трудно иметь дело с файлом резервной копии, который содержит несколько баз данных.Вот почему вы пишете этот небольшой скрипт и резервное копирование каждой базы данных в один файл.
Вы можете легко изменить скрипт, чтобы при необходимости выгрузить каждую таблицу в один файл резервной копии.