如何从mysqldump备份出的sql文件,恢复单个库或者单个表

前言



实际上关于数据库的备份,我们通常使用的是全备或者是对重要的数据库进行备份。但是,当我们因为某些情况,要对数据库执行恢复时,并不一定是要对数据库恢复全部内容,更多的是只恢复某个库或某张表的数据即可。

下面要介绍的就是如何从mysqldump备份出的sql文件,恢复单个库或者单个表

本文关于mysqldump的备份就不介绍了,mysqldump备份请参考下列链接:
https://blog.csdn.net/GX_1_11_real/article/details/81062074




从全备中,恢复单个库



【1】方法一


all.2018-12.sql为mysqldump全备出的sql文件

当要恢复的单个数据库仍存在于运行中的数据库时,可用下列方法恢复;
如该库已被删除,需先进入数据库中建立该库,再进行如下操作


示例:恢复test库

<1>从全备中直接导入单个库 

格式:
mysql -u用户 -p密码 单个数据库名  --one-database < 全备的sql文件

命令:
mysql -uroot -p'@#¥vse12'  test  -o  < all.2018-12.sql

备注:
-o 为 --one-database的缩写,也可使用 --one-database


【2】方法二


示例:恢复zabbix库

<1>从全备中直接导出zabbix库数据到新的sql文件

格式:
sed -n '/^-- Current Database: `表名`/,/^-- Current Database: `/p'  全备sql文件 > 新sql文件

命令:
sed -n '/^-- Current Database: `zabbix`/,/^-- Current Database: `/p' all.2018-12.sql > zabbix.sql


备注:
要注意空格,注意符号 
Current Database:后必有一个空格

图中为zabbix.sql的部分内容
如何从mysqldump备份出的sql文件,恢复单个库或者单个表_第1张图片



<2>将提取出的新的sql数据导入数据库

格式:
mysql -u用户 -p密码 < 单个库sql文件

命令:
mysql -uroot -p'@#¥vse12'  < zabbix.sql



从全备中,恢复单个表



【1】方法一


all.2018-12.sql为mysqldump全备出的sql文件


示例:恢复zabbix库的users表


<1>从全备份中导出该表的建表语句到新的sql文件中

格式:
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `表名`/!d;q'  全备sql文件 > 新sql文件

命令:
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `users`/!d;q' all.2018-12.sql > users.sql

如何从mysqldump备份出的sql文件,恢复单个库或者单个表_第2张图片



<2>从全备份中导出该表的insert into语句追加到上一个sql文件中

格式:
grep -i 'INSERT INTO `表名`'  全备sql文件 >> 含建表语句的sql文件

命令:
grep -i 'INSERT INTO `users`' all.2018-12.sql >> users.sql

如何从mysqldump备份出的sql文件,恢复单个库或者单个表_第3张图片



<3>导入到对应的库中

格式:
use 对应的库名;
source 导出的sql文件;

命令:
use zabbix;
source /root/users.sql;

备注:source时,也可使用相对路径

在这里插入图片描述

你可能感兴趣的:(运维日常的FAQ,Linux常用命令使用技巧,mysql数据库)