作者回复: 4.2 版本的驱动程序会自动在换主节点的时候重试读写操作。假设你有三台复制集群节点 A,B,C, A为主节点。你只需要执行以下操作,你的程序应该可以持续运行
1) 确定客户端应用使用的是最新版驱动程序
2) 停止C节点,并升级到4.2.2,然后启动服务
3) 停止B节点,并升级到4.2.2,然后启动服务
4) 停止A节点,并升级到4.2.2,然后启动服务
作者回复: 一个ip地址本来就可以对应多个域名。 多个域名指向同一个IP是很常见的。Apache的 Virtual Host就是这个道理。
在这里,因为我们用一台机器部署多个mongodb实例,我们给每个实例用了一个不同的域名,所以就看到了一个ip对应多个域名。
作者回复: 只会重试一次, 会一直等到primary选举成功才会试。如果30秒还没选出来,这个写操作就失败了。
30秒选不出来,这个大概率集群出故障了。
作者回复: 对。使用dump/restore 可以加速这个过程。如果不用dump也是可以,时间需要更多点,但是也是可以完成的。
作者回复: 已经录制,正在等排期发布
作者回复: 谢谢建议!
作者回复: MongoDB采用的是B+树。
作者回复:
其实比较简单的,假设ABC三个节点,A是当前主节点,大致可以按照以下步骤:
- 停止C的mongo服务,升级C的mongodb binary文件
- 重启C服务,等待集群稳定
- 停止B的mongo服务,升级B的mongodb binary文件
- 重启B服务,等待集群稳定
- 停止A,升级A的mongodb binary文件
- 重启A,等待集群稳定
这里有个中文翻译
http://www.mongoing.com/docs/release-notes/3.0-upgrade.html
作者回复: 假设ABC三个节点,A是当前主节点,以下就是步骤:
- 停止C服务,升级C的mongodb binary文件
- 重启C服务,等待集群稳定
- 停止B服务,升级B的mongodb binary文件
- 重启B服务,等待集群稳定
- 停止A服务,升级A的mongodb binary文件
- 重启A服务
很简单。
作者回复: 非常好!