Можно ли "сделать резервную копию" строки / таблицы с помощью mysqldump или чего-либо еще - PullRequest
3 голосов
/ 01 июня 2011

Предположим, строка (несколько строк) или таблица в базе данных.Могу ли я сделать их резервную копию, чтобы как можно быстрее восстановить только их, если строки / таблица будут повреждены.

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Я использую следующий 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

Результатом являются одиночные операторы вставки для всей таблицы.Вы должны извлечь строки, которые вы хотите восстановить.Поскольку вы не знаете, какой ряд будет поврежден, вам понадобятся все.Чтобы восстановить одну строку, просто найдите ее в файле резервной копии и выполните команду.

Мне было очень трудно иметь дело с файлом резервной копии, который содержит несколько баз данных.Вот почему вы пишете этот небольшой скрипт и резервное копирование каждой базы данных в один файл.

Вы можете легко изменить скрипт, чтобы при необходимости выгрузить каждую таблицу в один файл резервной копии.

3 голосов
/ 01 июня 2011

Для резервного копирования одной таблицы

mysqldump -u -p mydatabase table1 > table1.sql

или добавления опции --where для определенных строк.

Для восстановления из резервной копии

mysql -u -p mydatabase < table1.sql
2 голосов
/ 01 июня 2011

Если вы хотите сделать это через графический интерфейс, вы можете использовать PhpMyAdmin для создания SELECT, а затем использовать функцию «экспортировать этот запрос» - это дает вам опцию для экспорта в различные форматы, включая SQL (который затем можно выполнить непосредственно при необходимости восстановления)

...