利用wt工具恢复wiredtiger存储引擎的数据
admin
2023-01-19 03:20:08
0

一、准备工作

1.下载并安装wt实用工具包

wget http://source.wiredtiger.com/releases/wiredtiger-2.9.1.tar.bz2

tar xvf wiredtiger-2.9.1.tar.bz2 && cd wiredtiger-2.9.1

yum install snappy snappy-devel -y

./configure --enable-snappy

make

注意:最好下载和mongoDB中使用的wiredtiger版本对应的wt工具集。可以通过下面的方法获得

当前mongoDB所使用的wiredtiger版本,在当前MongoDB数据目录下执行:

 利用wt工具恢复wiredtiger存储引擎的数据

2.准备好要恢复的数据

如我们要恢复metrics_db数据库中的collection-101--2183197387550357866.wt 文件 的数据为例

在wireditger-2.9.1目录下新建立一个目录,用于存储要恢复的数据,这里建立了20171024这个目录,这里要注意一点:

要恢复的数据文件的存储目录一定要和原mongoDB的数据目录的结构一样,否则会出现 file not found错误

另外除了要恢复的数据文件外还需要其它的一些原数据文件,列表如下

WiredTiger

WiredTiger.lock

WiredTiger.turtle

WiredTiger.wt

WiredTigerLAS.wt

_mdb_catalog.wt

sizeStorer.wt

这些文件全部要存储在和原MongoDB数据目录结构一样的目录结构中。

二,恢复数据

1.检查可以恢复多少数据

[root@sdw2 wiredtiger-2.9.1]# ./wt -v -h ./20171024/ -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]"  -R salvage  metrics_db/collection-101--2183197387550357866.wt

大家要注意一下这里的参数,和命令的执行路径的关系,执行完这个命令后会输出如下结果

WT_SESSION.salvage 100

后台的数字就是可以被恢复的数据

2.使用wt工具dump出可以恢复的数据

[root@sdw2 wiredtiger-2.9.1]# ./wt -v -h ./20171024/ -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]"  -R dump -f collection.dump  metrics_db/collection-101--2183197387550357866  

这里自用 -f 参数指定了dump数据的输出文件.另外注意这一步中我们不用指定要恢复数据文件 的扩展名,也就是省去了.wt三个字符

3.备准一个用户于恢复数据使用的mongoDB实例

mongod --dbpath /data/mongo_data --storageEngine wiredTiger

4.连接到这个新的实例,并建立一个用户恢复数据库

[root@sdw2] mongo 127.0.0.1:27017

> use recovery

> db.t.insert({id:1})

> db.t.remove({}) #建立一个表,插入一条数据后并删除,我们主要是要在recovery目录上生成一个wt文件

> db.t.status() #查看刚才操作所生成的wt文件

 利用wt工具恢复wiredtiger存储引擎的数据

记录下这个文件名和目录,我们后续就是要利用wt命令从刚才dump的文件中重新生成这个文件,并把要恢复的数据恢复出来。现在我们要停止这个mongoDB实例,否则下面恢复数据时会报错

5. load数据到wt文件中

[root@sdw2 wiredtiger-2.9.1]# ./wt -v -h /data/mongo_data/ -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R load -f  collection.dump -r recovery/collection-0--4285167332299985373

table:recovery/collection-5-1786621982084020644: 11305

注意:

-h 参数指定的是我们刚才启动mongoDB时所指定的数据目录

-r 参数指定的就是我们刚才生成的用于recovery的WT文件

6.重启mongoDB实例

mongod --dbpath /data/mongo_data --storageEngine wiredTiger

7.使用mongodump备份数据

由于我们替换了wt文件,所以这时原数据还有一些不一致,因此在mongo中还看不到我们恢复的数据,这时我们要利用mongodump和mongorestore命令来重新导出并导入一下数据,这样才可以真正的恢复数据

mongodump  -h 127.0.0.1:27017-d recovery

8使用mongorestore重新恢复数据

mongorestore -h227.0.0.1:27017--drop dump/


MySQL课程推荐

   MySQL性能管理及架构设计

   高性能可扩展MySQL数据库设计及架构优化 电商项目  


相关内容

热门资讯

中美会谈将谈及TikTok,商... 有记者问:据中美发布的有关消息,双方将于9月14日在西班牙举行会谈,并将谈及TikTok问题,请问商...
首位AI“部长”将执掌阿尔巴尼... 当地时间9月12日,阿尔巴尼亚总统贝加伊正式任命埃迪·拉马为总理。△阿尔巴尼亚总统(右)任命拉马为总...
“西贝等企业预制菜占比80%以... 极目新闻记者 余渊9月12日上午,罗永浩再次@西贝贾国龙喊话,其晒出一份名为《预制菜行业发展报告》的...
北京中小学“AI教育+通识课程... 9月11日,2025年中国国际服务贸易交易会教育服务专题开幕式上,海淀区、东城区、朝阳区、平谷区、通...
特朗普:对普京的耐心正在耗尽 美国总统特朗普9月12日在接受福克斯新闻采访时表示,“泽连斯基并没有很快同意和进行和平谈判。当普京想...
《命运:群星》意外亮相苹果发布... 又是一年苹果发布会,相信不少玩家朋友都熬夜刷了直播——虽然发布会主角是苹果旗下的新产品,但每年都有些...
罗永浩:我觉得这按正常人类的理... “什么叫‘堂食袋装’‘非直接提供消费者”?顺便也问问@西贝贾国龙 。”9月11日晚,罗永浩曾晒出两袋...
自主研发新型保鲜剂,打破生物保... 科技引航看高校 近日,天津商业大学“禁止蕉绿”团队成功研发出一款新型保鲜剂,能将香蕉在常温下的货架期...
石家庄发生巨响,有居民称“房子... 极目新闻记者 张皓9月12日,众多网友发文称,河北石家庄突发巨响,不知道什么情况。极目新闻记者咨询应...
科普|这些气象知识你知道吗? 关于气象知识 在民间经常听到 分享关于天气变化的一些经验 日晕三更雨,月晕午时风 其实这里面有一定的...