这篇文章将为大家详细讲解有关MongoDB副本集运维策略是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
MongoDB 副本集的维护/升级通常以滚动方式执行,依次在辅助节点上执行维护,而最后执行主节点维护。
假定一个副本集包含mon01(主节点),mon02(辅助)mon03(辅助),滚动运维通常需要:
如果主服务器意外终止/大多数辅助节点觉得与主节点失联,则辅助节点会在丢失心跳10秒钟后要求进行选举。
退出(stepDown)主节点可加快故障转移过程,建议使用stepDown命令退出主节点以强制触发选举,而不是关闭(shutDownServer)主数据库 (辅助节点需花时间识别主节点失联)
减少electionTimeoutMillis阈值
辅助节点认定主节点失联的默认阈值是10s, 在滚动维护期间我们可人为缩短这个阈值,加快选举。但是运维完毕,请恢复这个默认设置。
rs.isMaster().me
// mon02:27000
// rs0:PRIMARY>
// on the new primary
var conf = rs.conf()
conf.settings.electionTimeoutMillis=10000
/*
rs.reconfig(conf)
{
"ok": 1,
"operationTime": Timestamp(1529034252, 1),
"$clusterTime": {
"clusterTime": Timestamp(1529034252, 1),
"signature": {
"hash": BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId": NumberLong(0)
}
}
}
*/
“10s的阈值是合适的,我们要确保集群能够忽略和忍耐网络抖动或网络延迟, 减少不必要的重选。
一般情况下,会根据如下因素选择 主节点
若想指定某辅助节点mon02为下一个主节点,在其他辅助节点上运行rs.freeze(60)冻结它们成为主节点的资格;当你stepDown主节点mon01时,辅助节点mon02是唯一可以选择的主节点,这将加快选举速度。
或
您可以通过给予副本集成员比其他成员更高的member [n] .priority值来使其成为主节点。
cfg = rs.conf()
cfg.members[0].priority = 0.5
cfg.members[1].priority = 0.5
cfg.members[2].priority = 1
参考的运维命令:
rs.conf() 返回包含当前副本集配置的文档 rs.sttaus() 返回副本集某成员视角收到的副本集状态 rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs) 指示主节点退化为辅助节点,之后合格的辅助节点会发起选举;另外并不是立即退化,等待指定时间确保有一个节点与主节点保持最新同步。rs.freeze(seconds) 在一定时间内冻结节点成为主节点的资格rs.reconfig(configuration, force) 重新配置现有副本集,覆盖现有副本集配置(需要连到主节点执行)
关于MongoDB副本集运维策略是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。