Attention To, Convert To Capped Collection

简介:
假设3个节点的replica Set,其中有一个collection包含索引已经50GB了,所在的数据库分区空间剩余不足50GB。
需要将这个collection转换成cappedCollection。
需要注意哪些?
先来看看转换操作的特点:
1. 首先convertToCapped操作包含了以下内容,
                                "cloneCollectionAsCapped" : "$yourCollection",
                                "toCollection" : ".tmp.convertToCapped.$yourCollection",
                                "size" : $定义的大小
其实是先创建好cappedCollection,然后克隆数据。

2. convertToCapped操作还是一个写锁操作,非常危险。
convertToCapped: write-lock
  { convertToCapped:<fromCollectionName>, size:<sizeInBytes> }

结合这两点,我们应该注意啥呢?
1. 避免直接在PRIMARY节点操作. 可以选择先将其中的一个SECONDARY节点从replicaSet去除, 转换好在加进来并且转换为PRIMARY角色。
2. 由于是拷贝的操作,所以需要有足够的剩余空间,但是显然这里剩余空间是不够的,所以需要先腾出足够的空间来做转换操作。(可能需要重建库才能缩减存储空间)
3. cappedCollection在_ID上是不建索引的,并且事先建立索引也将影响拷贝速度,所以建议先将索引全部删除再开始转换操作。

另外需要注意的是,节点拆除之后,被拆除的节点需要进入非replicaSet启动模式,否则启动后不能做写操作。例如注释掉两行:
# replSet=blss
# autoresync=true
再次加入replicaSet之后,启动的时候需要将注释去掉,并且加入启动参数 : 
--replSet blss/192.168.xxx.xxx:xxxx,192.168.xxx.xxx:xxxx,192.168.xxx.xxx:xxxx 
replSet这里要写全,否则新加入的节点会认为自己的配置文件里面没有自己,无法加入到replicaSet.
PRIMARY节点报错 : 
                {
                        "_id" : 2,
                        "name" : "192.168.xxx.xxx:xxxx",
                        "health" : 0,
                        "state" : 6,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "t" : 0,
                                "i" : 0
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2011-11-01T23:53:44Z"),
                        "errmsg" : "still initializing"
                }
新加入中的节点报错 : 
Wed Nov  2 07:50:20 [startReplSets] replSet caught exception in startReplSets thread: replSet error self not present in the configur
ation


【其他参考】
30G的collection,转cappedCollection.
耗时73688秒,还没有转结束。
> db.currentOp()
{
        "inprog" : [
                {
                        "opid" : 24,
                        "active" : true,
                        "waitingForLock" : false,
                        "secs_running" : 73688,
                        "op" : "query",
                        "ns" : "blss..tmp.convertToCapped.$myCollection",
                        "query" : {
                                "cloneCollectionAsCapped" : "$myCollection",
                                "toCollection" : ".tmp.convertToCapped.$myCollection",
                                "size" : 30000000000
                        },
                        "client" : "0.0.0.0:0",
                        "desc" : "conn"
                }
        ]
}
目录
相关文章
|
9月前
|
存储 人工智能 数据可视化
拍汉服照,自动调色超厉害的软件是什么?摄影师 2025 新春必备!
在汉服制作与租赁行业蓬勃发展的背景下,2025蛇年新春为摄影师带来了更多机遇。高质量的摄影作品至关重要,合适的自动调色和团队协作软件能极大提升效率。推荐6款软件助力摄影师:板栗看板提供清晰流程管理和实时沟通;Luminar智能调色一键打造古风;Capture One精准色彩管理还原汉服本色;Darktable开源免费且功能强大;On1 Photo RAW综合功能强大并引入AI技术;Polarr移动端便捷调色。这些工具将帮助摄影师在新春期间大放异彩,同时确保团队协作顺畅高效。
212 1
|
自动驾驶 物联网 5G
深入探索5G网络中的网络切片技术及其应用场景
深入探索5G网络中的网络切片技术及其应用场景
3095 3
|
安全 云栖大会 云计算
首批Well-Architected生态合作伙伴揭晓,齐聚2024云栖大会
在帮助企业客户上好云、用好云、管好云的道路上,阿里云始终坚持开放合作的理念,不断寻求与优质的生态伙伴深化合作,携手共建Well-Architected技术与服务方案。在今年的云栖大会上,共七家合作伙伴企业荣获首批「Well-Architected阿里云卓越架构生态合作伙伴」认证。
525 2
|
人工智能 搜索推荐 数据挖掘
AI教育的评估方法有哪些?
【6月更文挑战第2天】AI教育的评估方法有哪些?
582 2
|
JavaScript 网络架构
vue3动态路由的概念以及如何配置---vue3学习笔记
vue3动态路由的概念以及如何配置---vue3学习笔记
693 0
|
机器学习/深度学习 边缘计算 物联网
【轻量化网络】初识:SqueezeNet网络&MobileNet网络& ShuffleNet网络
【轻量化网络】初识:SqueezeNet网络&MobileNet网络& ShuffleNet网络
798 0
|
人工智能 前端开发 机器人
【杂谈】扣子(Coze) 初体验
扣子(Coze)是什么 官方原文如下: 扣子(coze.cn)是一款用来开发新一代 AI Chat Bot 的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的 Chat Bot,并将其发布到各类社交平台和通讯软件上。 我们可以理解为一个聊天🤖️,可以在其他平台上发布。那就让我们快速开始吧
1719 0
|
存储 运维 监控
经典好文:银行业IT服务连续性体系与灾备自动化切换经验分享
经典好文:银行业IT服务连续性体系与灾备自动化切换经验分享
562 0
|
设计模式 算法 JavaScript
策略模式-优雅的改造短信业务模块
策略模式-优雅的改造短信业务模块
策略模式-优雅的改造短信业务模块