早上小红过来问我说网站的一个功能没了,看了下数据库,少了个表。好吧,心里mmp,开始恢复数据
环境: 全库备份 恢复某一个表
1.1 查看备份数据
[[email protected] mysql_backup]$ ls -lh
total 16G
-rw-r--r-- 1 root root 5.4G May 21 00:58 2018_05_21_00_30_01.all.sql.zip ##找到了备份数据
1.2 查看备份文件类型
[[email protected] mysql_backup]$ file 2018_05_21_00_30_01.all.sql.zip ##查看文件类型
2018_05_21_00_30_01.all.sql.zip: Zip archive data, at least v3.0 to extract
1.3 解压
将压缩文件“2018_05_21_00_30_01.all.sql.zip”在当前目录下解压缩。
[[email protected] mysql_backup]$ unzip 2018_05_21_00_30_01.all.sql.zip
将压缩文件“2018_05_21_00_30_01.all.sql.zip”在指定目录/tmp
下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件
[[email protected] mysql_backup]$ unzip -n 2018_05_21_00_30_01.all.sql.zip -d /tmp
1.4 恢复数据
如何从全库备份中抽取某张表呢,全库恢复,再恢复某张表小库还可以,大库就很麻烦了,那我们可以利用正则表达式来进行快速抽取,具体实现方法如下:
1.从全库备份中抽取出t表的表结构 sed -e‘/./{H;$!d;}‘ -e ‘x;/CREATE TABLE `domain`/!d;q‘
查找到了domain表的结构
[[email protected] mysql_backup]$ sed -e‘/./{H;$!d;}‘ -e ‘x;/CREATE TABLE `domain`/!d;q‘ 2018_05_22_00_30_01.all.sql
DROP TABLE IF EXISTS `domain`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `domain` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘主键id‘,
`domain_name` varchar(255) NOT NULL DEFAULT ‘‘ COMMENT ‘域名‘,
`create_time` int(11) unsigned DEFAULT ‘0‘ COMMENT ‘创建时间‘,
`status` tinyint(1) NOT NULL DEFAULT ‘0‘ COMMENT ‘域名状态(0- 正常 1-封禁 -1 删除)‘,
PRIMARY KEY (`id`)
) ENGINE=MEMORY AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
2.从全库备份中抽取出t表的内容
[[email protected] ~]$ grep‘INSERT INTO `domain`‘ 2018_05_22_00_30_01.all.sql
INSERT INTO `domain`
VALUES
(
1,
www.baidu.com‘,
1523781065 ,- 1
),
原文地址:https://www.cnblogs.com/mclzy/p/9078815.html