考虑到您必须将mongo群集从一个环境移动到另一个环境,并且在此过程中停机时间最短。
假设您拥有环境1(即AWS),以及以下mongo节点:
您的应用程序配置为使用硬编码的IP地址和没有DNS名称与mongo_aws_1,2,3通信。
将群集移动到另一个环境(即Google Cloud)的最简单方法是什么,以便您拥有
我的迁移计划如下(这个假设是AWS和GC之间的连接)
rs.add('host': 'mongo_gc_1:27017', 'priority': 0)
)。然后等到节点与replicaset同步(整个数据集小于15GB,所以可以等待)rs.reconfig()
)这应该有效,它引入的唯一停机时间是旧的主要步骤停止。
但是,它假定主要操作在整个操作期间不会发生变化。 另一方面,根据文件:
rs.reconfig()shell方法可以强制当前主节点降级,从而导致选举
同样,当你从replicaset中删除一个节点时:
此功能将短暂断开shell并强制重新连接,因为副本集重新协商哪个成员将是主要成员。因此,即使此命令成功,shell也会显示错误。
实现这个的正确方法应该是什么?我可以以某种方式避免不必要的重新选择吗?
答案 0 :(得分:0)
当你{3}个3个GC节点时,你也可以add
。隐藏成员不仅不能成为主要成员,而且客户端应用程序也看不到它们。
hidden
提供了rs.add()
db命令的一些功能和相应的shell帮助器replSetReconfig
的包装器:
replSetReconfig
:此命令可能会导致停机,因为设备重新协商了主要状态。因此,您应尝试仅在计划的维护期间重新配置。
通过这样做,您提出的方式可能导致3次单独选举:
rs.reconfig
通过将rs.add({host: "mongo_gc_1:27017", priority: 0 })
rs.add({host: "mongo_gc_2:27017", priority: 0 })
rs.add({host: "mongo_gc_3:27017", priority: 0 })
和/或priority
更改合并到一个hidden
电话中,您可以将这种可能性降低到1:
reconfig