滚动维护:
- 要查看您有多少 oplog 时间,关闭辅助节点并赶上:db.printReplicationInfo()
- 当与 Primary、Secondary 和 Arbiter 一起工作时......然后取出辅助设备可能会有风险。万一在您的维护期间发生某些事情,主服务器将不会进行故障转移。小学-中学-中学会更安全。
- 关闭辅助节点后,在没有 --replSet 选项的情况下重新启动它,并且在不同的端口上重新启动它,否则副本集的其余部分将被混淆。
- 使用 --replSet 重新启动您的辅助节点,旧端口将再次将其添加到 ReplicaSet。别担心,你的初级会保持初级。投票/选举“仅”发生在主节点消失时……而添加辅助节点时并非如此。
- 辅助节点将赶上 oplog。
- 在主节点上工作。在 Primary 上执行 rs.stepDown(),让 Secondary 接管,然后重复该过程。
滚动维护期间的清理
在这里我不是很确定,现在只能做一些猜测,因为我还没有测试过。在滚动维护期间您可以做的是:
- 更新二进制文件(apt-get update/yum update/...)
- 建立索引
- 紧凑和修复
现在关于删除数据?您需要在本地小型副本上进行测试。
- 恐怕转储/恢复是个坏主意。但我不确定。
- 执行删除语句...我认为有一种方法可以做到这一点,然后让该语句在主节点上执行,但我还不知道如何。
- 最简单的:为什么不在主节点上执行 remove 语句并让它传播到辅助节点?因为你想减小数据库大小?好吧,删除后,您可以进行滚动维护以进行修复。Compact 不会创建额外的空间,只会在预先分配的文件中排序数据。而修理,要小心,需要双倍的空间来建造。一个 100GB 的数据库需要至少 100GB 的可用空间来进行修复。
https://dba.stackexchange.com/questions/28269/disk-space-recovery-on-mongodb-replicaset-secondaries
并查看https://university.mongodb.com => M202: MongoDB Advanced Deployment and Operations ... 这个问题在那些免费课程中处理。