在mysql dba的日常实际工作中,一个实例下有多个库,而我们常见的备份就是全库备份。那么问题就来了,如果需要恢复单个库或者单个表,怎么办了,网上有很多人都有多种方法,今天,我自己结合众多资料,将实践记录下来,以便供参考。
环境介绍
[root@Admin ~]# cat /etc/redhat-release #系统版本
CentOS release 6.10 (Final)
[root@Admin ~]# mysql -V #mysql版本
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
一、获取全量库备份SQL(测试数据)
二、恢复单个库
sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' all_database.sql > dgstack.sql
## 语句解释: 从全备份文件中将需要的库的建表语句和INSERT数据拿出来,然后再导入
mysql -uroot -p < dgstack.sql &
#恢复库
三、恢复单个表
模拟删除错误
开始恢复
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `secu_org`/!d;q' 2019-08-27activity.sql> dg.sql
# 从全备份中提取出该表的建表语句
grep -i 'INSERT INTO `secu_org`' 2019-08-27activity.sql >> dg.sql
# 提取该表的insert into语句
# mysql -uroot -p fuqinactivity < dg.sql
# 导入到对应的库中《fuqinactivity 是库名》
如有出现报错,可以查看日志进行排查,或者进入QQ群一起讨论问题。
- QQ精品交流群
-
- 微信公众号
-