MongoDB 数据文件损坏修复救命repair与致命危险

本文通过一个实例展示了在无备份情况下,MongoDB数据库因断电导致数据文件损坏,使用repair命令进行修复的过程。修复过程中,损坏的数据集合被重建,导致原有数据丢失,但服务能够恢复正常运行。作者强调了数据安全的重要性,推荐使用MongoDB副本集配合延迟同步节点以保障数据冗余和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近,一客户单实例mongodb数据库,没有备份的情况下遇到了断电导致的数据文件损坏,由于客户业务需要

及数据的不敏感性,要求尽快恢复业务,使用了Mongdb的自动修复repair命令进行修复。可喜的是,帮助用户尽

快恢复了服务,可悲的是在客户可接受情况下相关数据文件内的数据丢失。这里,对这一过程做个总结,同时说明

repair后为什么数据丢失。

  1. 正常的mongodb数据查询

> show dbs;

admin       0.000GB

config      0.000GB

dns_testdb  0.009GB

local       0.000GB

> use dns_testdb

switched to db dns_testdb

> db.test_collection.find();

{ "_id" : ObjectId("5fedd03d9d2569ee04ab62e1"), "name" : "elephant", "user_id" : 0, "boolean" : false, "added_at" : ISODate("2020-12-31T13:21:01.226Z"), "number" : 5129 }

{ "_id" : ObjectId("5fedd03d9d2569ee04ab62e2"), "name" : "dog", "user_id" : 1, "boolean" : false, "added_at" : ISODate("2020-12-31T13:21:01.237Z"), "number" : 9699 }

{ "_id" : ObjectId("5fedd03d9d2569ee04ab62e3"), "name" : "lion", "user_id" : 2, "boolean" : false, "added_at" : ISODate("2020-12-31T13:21:01.238Z"), "number" : 1783 }

Type "it" for more

> 

2.模拟数据文件损坏

[mongo@centos7 dns_testdb]$ du -sh *

28M collection-8--6736947369024546614.wt

9.5M index-9--6736947369024546614.wt

[mongo@centos7 dns_testdb]$ 

[mongo@centos7 dns_testdb]$ 

[mongo@centos7 dns_testdb]$ pwd

/opt/mongo/data/single/dns_testdb

[mongo@centos7 dns_testdb]$ dd if=/dev/null of=/opt/mongo/data/single/dns_testdb/collection-8--6736947369024546614.wt  bs=1024k count=5

0+0 records in

0+0 records out

0 bytes (0 B) copied, 0.000132203 s, 0.0 kB/s

[mongo@centos7 dns_testdb]$

3.重新启动mongodb

> use admin
switched to db admin
> db.shutdownServer();
[mongo@centos7 data]$ mongod --dbpath /opt/mongo/data/single --port 50001  --oplogSize 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值