【Mongo】.wt文件数据恢复

使用Wiredtiger恢复.每一个collection-*.wt文件都是一个记录.

该方法恢复数据需要Mongo版本大于>=3.2

环境准备

安装Mongo

sudo apt-get install mongodb

安装Wiredtiger

wget http://source.wiredtiger.com/releases/wiredtiger-3.0.0.tar.bz2
tar xvf wiredtiger-3.0.0.tar.bz2
cd wiredtiger-3.0.0

sudo yum install snappy-devel -y    #如果是ubuntu则用 sudo apt-get install libsnappy-dev build-essential

./configure --enable-snappy
make

文件打包

将需要恢复的文件打包在一个目录下,暂且命名为dump(或者其他的,任意),其内应当包含的文件如下

collection-0--282010455938071573.wt			# 要恢复的collection文件
_mdb_catalog.wt
sizeStorer.wt
storage.bson
WiredTiger
WiredTiger.basecfg
WiredTiger.lock
WiredTiger.turtle
WiredTiger.wt

或者

admin              
local
config  
#上面这三个都是数据库文件夹,也可以有其他数据库文件夹
***                      
WiredTiger.wt
sizeStorer.wt
storage.bson
_mdb_catalog.wt  
WiredTiger 
WiredTiger.basecfg
WiredTiger.lock
WiredTiger.turtle
***
WiredTigerLAS.wt
WiredTiger.wt.1
iocheck.dat
_tmp
# ***之间的文件为必须拥有的,没有的话可以在mongo目录下copy一份

恢复

切换到wiredtiger目录下

执行以下命令

sudo ./wt -v -h ../dump -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R dump -f ../collection.dump config/collection-27--1340615817856652461

# ../dump即是我们打包的文件夹 
# ../collection.dump则是我们希望将待恢复文件dump出的文件位置及导出文件名,可自定义
# config/collection-27--1340615817856652461 则是待恢复文件. 这代表config数据库下的collection-27--1340615817856652461.wt文件 不要带有.wt后缀,否则会出错
# 这条命令执行完毕后终端是不会有返回信息的,而collection.dump文件里则会出现数据

下面需要将collection.dump载入到mongo中

# 首先在mongo中创建一条新记录
use anydb		#数据库名随便起,后面的数据会载入到这个数据库中
db.back.insert({test: 1})
db.back.remove({})
db.back.stats()	# 查看一下新记录的uri
# uri是类似这样的一条数据 "uri" : "statistics:table:collection-4--1715130797026980155",

# 而后关闭mongo,否则会载入失败
sudo service mongodb stop

# 执行以下命令载入collection.dump
# /var/lib/mongodb是mongo路径,在上面的操作中添加记录后这个路径下应当会存在一个collection-4--1715130797026980155.wt文件
sudo ./wt -v -h /var/lib/mongodb -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R load -f ../collection.dump -r collection-4--1715130797026980155
# 这一步会将collection.dump中的数据替换到collection-4--1715130797026980155.wt中

# 开启mongo
sudo service mongodb start
# 如果开启失败,则进入mongo的目录(比如/var/lib/mongo),执行以下命令,而后重启mongo
sudo chown -R mongodb:mongodb /var/lib/mongodb

# 随便切换目录到一个路径,比如~/Documents
# 这个时候文件已经替换完毕,但是其中的记录可能暂时还无法查看,需要执行以下操作
mongodump
mongorestore --drop

# 而后便可以进入mongo shell查询数据
# 查询见下图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值