是否可以使用mysqldump或其他任何方式“备份”行/表

时间:2011-06-01 09:35:59

标签: mysql database backup mysqldump

假设数据库中有一行(几行)或表。我可以备份它们,只有当行/表被破坏时才能尽快恢复它们。

提前谢谢你!

3 个答案:

答案 0 :(得分:3)

备份一个表

mysqldump -u -p mydatabase table1 > table1.sql

或为特定行添加--where选项。

从备份中恢复

mysql -u -p mydatabase < table1.sql

答案 1 :(得分:3)

我使用以下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-table --add-locks --extended-insert = false --databases --allow -keywords -c -e -f -u username --password = password'databasename'&gt; /path/to/backupfiles/databasename.sql

结果是整个表的单个insert-statement。您必须提取要还原的行。由于您不知道哪一行会被损坏,因此您将需要它们。要恢复单个行,只需在备份文件中找到它并执行命令。

我发现处理包含多个数据库的备份文件非常困难。这就是编写这个小脚本并将每个数据库备份到一个文件中的原因。

您可以轻松地更改脚本,以便在需要时将每个表转储到单个备份文件中。

答案 2 :(得分:2)

如果您想通过GUI执行此操作,可以使用PhpMyAdmin构建SELECT,然后使用“导出此查询”功能 - 这将为您提供各种格式的option to export,包括SQL(您可以在需要还原时直接执行)