利用wt工具恢复wiredtiger存储引擎的数据-创新互联
一、准备工作
为锦屏等地区用户提供了全套网页设计制作服务,及锦屏网站建设行业解决方案。主营业务为成都网站设计、网站制作、锦屏网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!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数据目录下执行:
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命令从刚才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数据库设计及架构优化 电商项目
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:利用wt工具恢复wiredtiger存储引擎的数据-创新互联
URL地址:http://scjbc.cn/article/coipgc.html