惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
Cloudbric
Cloudbric
The Register - Security
The Register - Security
小众软件
小众软件
PCI Perspectives
PCI Perspectives
G
Google Developers Blog
AI
AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
TaoSecurity Blog
TaoSecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
F
Full Disclosure
N
Netflix TechBlog - Medium
博客园_首页
Last Week in AI
Last Week in AI
A
Arctic Wolf
B
Blog RSS Feed
J
Java Code Geeks
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
有赞技术团队
有赞技术团队
S
Schneier on Security
L
Lohrmann on Cybersecurity
P
Privacy & Cybersecurity Law Blog
T
Threat Research - Cisco Blogs
P
Palo Alto Networks Blog
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Security Latest
Security Latest
Vercel News
Vercel News
博客园 - 司徒正美
Webroot Blog
Webroot Blog
Hacker News: Ask HN
Hacker News: Ask HN
A
About on SuperTechFans

博客园 - 轮回

《Vibe Coding 入门宝典:非程序员的AI开发指南》一本改变软件生产方式的开源书 OpenAI API 百度文心大模型API测试 AI工具导航 一键生成dotnet5项目解决方案 倡议发起博客园#爷青回#挑战活动 1024快乐,加班使我快乐,福报如圣光醍醐灌顶! dotnet core 3.0 swagger 显示枚举描述 dotnet core swagger filter 隐藏接口和显示枚举描述 dotnet core 项目脚手架这种小事嘛... .net core 2.2 EF oracle db first 不同语言的水仙花性能比较【Test1W】 application.properties详解 --springBoot配置文件【转载】 以太坊客户端Geth命令用法-参数详解【转载】 CentOS7搭建以太坊私有链 【Java编码规范】《阿里巴巴Java开发手册(正式版)》【转载】 SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【转载】 Eclipse快捷键大全(转载) 在redis一致性hash(shard)中使用lua脚本的坑 如何评价微软Connect 2015?[转载]
记一次断电引起的mongodb彻底奔溃【转载】
轮回 · 2020-01-16 · via 博客园 - 轮回

周末四台mongodb主机同时断电,起来后shard中两个分片的主副本全部损坏。瞬间我xxxxxxxxx,此处省略300字。

接下来开始我的漫长修复之旅。先说明下,我的存储数据有11亿条,20T。

一、先修复shard0004的第一个复制集吧,先尝试用了官方的mongod repair.跑了2天,还是奔溃了,报其中几个collection的wt文件找不到。马上百度、google,居然都没有人提到这个问题。。。草泥马。。。

最后还是去下载了wt,尝试看看有啥办法修复,这其中历经艰辛,你们也不想了解了,直接说解决办法。

1.必须下载编译wt,这个自己到wiretiger官网去下。

2.在本地新建一个备份目录bak,吧dbpath下的所有wiretiger等文件都靠过来,还有 sizeStorer.wt。

3.在把第二步做的备份目录,再拷贝一份bak2,这步非常非常关键。否则会有问题。

4.在bak2目录下,执行./wt -v -h ./bak2 -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" list|grep 丢失的文件名(不要含wt)

会有三个。

然后分别执行(drop掉三个):

./wt -v -h ./bak2 -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" drop file:local/index-3-2981754152560542274.wt

然后再执行:(只执行一次)

./wt -v -h ./bak2 -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" create local/index-3-2981754152560542274
5.然后吧生成的wt文件考回bak目录下去。
6.在bak目录下执行:
./wt -v -h ./bak -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R salvagelocal/index-3-2981754152560542274
7.把bak目录下的所有wiretiger文件和新生成的wt文件都考回正式库,然后就可以启动啦。

以上是关于wt文件丢失的处理办法。

二、然后再说下如果是报wt文件的checksum不对的处理办法。这个处理比较简单,网络上也有。
还是用wt来处理:
1.新建一个bak目录,把上面第二步说的都拷过去(这里其实不建bak也可以的,对正式库没有影响。)
2.在bak目录执行,发现和上面一样啦
./wt -v -h ./bak -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R salvagelocal/index-3-2981754152560542274
3.哦耶,还是把上面第7步说的东西考回正式库,就可以起来啦。

三、还记得上面用过repair吗?我去,他导致local下的index文件报错。这个还没有办法用wt。很简单,继续用官方的repair来做一遍就好了。

四、终于完成一个副本集的修复啦,oh my god。

五、还有一个shard的要修复啊。这个更奔溃,wiretiger自己的wt损坏了。这个我很负责的告诉你,截止20170726,没有办法修复。我是把这些文件打包发给官方去修复的。官方会响应,但是我可是等不了他了。咳。。

所以最后最后最后,我还是重建了另一个shard,当做所有shard数据丢失。

再说下,停电重启后,dbpath是无法再mount上去了。说结构需要清理。xfs_repair又说有log 要replay。最后我没办法还能加-L参数,摧毁了replay log。郁闷不。(官网就是让我们去mount的,但是我查网络上貌似都做不到。)

杨建飘雪 最后发布于2017-07-26 09:41:21
https://blog.csdn.net/zhaow7/article/details/76104476