2011-06-01 43 views

回答

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的转储命令是:

/usr/local/bin/mysqldump -h your.database.h ost --add-drop-database --add-drop-table --add-locks --extended-insert = false --databases --allow-keywords -c -e -f -u username --password = password' databasename'> /path/to/backupfiles/databasename.sql

结果是整个表的单个插入语句。你必须提取你想要恢复的行。既然你不知道哪一行会被损坏,你就需要它们。要恢复单个行,只需在备份文件中找到并执行该命令即可。

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

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

3

要备份一个表

mysqldump -u -p mydatabase table1 > table1.sql 

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

从备份恢复

mysql -u -p mydatabase < table1.sql 
2

如果你想通过GUI要做到这一点,你可以使用phpMyAdmin构建SELECT,然后使用“导出此查询”功能 - 这让你在各种格式,包括SQL的option to export(您可以再当你需要恢复时直接执行)

相关问题