возможно ли «создать резервную копию» строки / таблицы с помощью mysqldump или чего-либо еще

#mysql #database #backup #mysqldump

#База данных #резервное копирование #mysql

Вопрос:

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

заранее благодарю вас!

Комментарии:

1. dev.mysql.com/doc/refman/5.1/en/…

Ответ №1:

Я использую следующий 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 donen";
   sleep(2);
}
  

Команда mysql-dump является:

/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 имя пользователя —пароль=password ‘databasename’ > /путь /к/backupfiles/databasename.sql

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

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

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

Ответ №2:

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

 mysqldump -u -p mydatabase table1 > table1.sql
  

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

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

 mysql -u -p mydatabase < table1.sql
  

Ответ №3:

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