docker搭建mongodb单节点副本集的实现

在开发中,我们很容易通过docker启动一个普通的mongodb数据库服务。但是有时候为了保持与线上环境一致,或者为了利用mongodb副本集的某些特性,我们需要在本地部署mongodb副本集。副本集往往需要启动多个mongodb服务作为副本集成员,而通常用于开发的笔记本资源比较有限。鉴于此,官方文档给了解决办法,可以直接将一个单节点mongodb服务转换为单节点副本集(standlone replica set)(https://www.mongodb.com/docs/manual/tutorial/convert-standalone-to-replica-set/),按照官方文档的说明,如果利用docker部署服务,那么依次有如下步骤:,按照上述步骤执行后,通常情况下容器服务可以正常运行,应用程序可以正常进行连接,到这里基本就成功了。以golang代码测试:,但是有时候可能会出现本地程序代码无法连接副本集服务,控制台会报类似连接错误的问题,报错的原因在于副本集无法识别成员host。,在单节点副本集下,本机既是主也是从,在容器的mongo shell中可进行查看, members只有一个成员,其name"f76081e20602:27017", 所以如果你遇到无法连接或者其他类似错误,根本原因在于本地启动的这个副本集无法识别f76081e20602这个host。,曾经遇到上述问题,百度csdn上有多篇内容一样的文章,都说这种情况需要将应用程序也通过容器进行启动,并将应用程序与mongdb副本集服务置于同一个docker网络中,就可以正常连接了。这样做确实也可行,但似乎过于麻烦了,有点走歪路的感觉。,从上述内容已经知道是副本集成员host的识别问题,那么在初始化mongodb副本集时,我们可以显式的去指定成员host,不使用默认的副本集配置。具体而言,将启动步骤中的第三步更改为:,如此,通过指定成员ip,mongo单节点副本集就可以准确的识别到副本集成员,对于多节点副本集如果出现连接问题,此方法同样适用。
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册