MySQL从全备文件中恢复单张表

通过终端命令行进行MySQL备份还原;通常,我们可以很简单地使用mysqldump来备份MySQL中的数据库或其中单独的表,还原时,直接将备份出来的SQL文件导入即可;但有时会出现这种情况:之前备份了整个数据库,没有对表进行单独备份,这时只需要还原单张表,怎么弄呢?

当然,mysql命令导入相当于重新执行备份的SQL文件,本身并未提供此类还原方法。但我们可以使用sed命令从完整的备份文件中“提取”想要恢复的表数据到新的文件中再执行操作。方法如下:

例如,我备份了整个wordpress数据库:

[root@test ~]# mysqldump -uroot -p --opt wordpress > wordpress.sql

现在我想单独恢复其中的wp_options数据表,使用sed进行提取保存:

[root@test ~]# sed -n -e '/DROP TABLE.*`wp_options`/,/UNLOCK TABLES/p' wordpress.sql > wp_options.sql

这个意思是,从wordpress.sql文件中,查找到DROP TABLE `wp_options`这句,然后从其开始一直到出现UNLOCK TABLES结束,导出到wp_options.sql文件中。

最后恢复操作同正常一样恢复即可:

[root@test ~]# mysql -uroot -p wordpress < wp_options.sql

 

发表评论

error: Content is protected !!