使用docker和fig设置mongodb副本集的正确方法是什么?
使用docker和fig设置mongodb副本集的正确方法是什么 我试图按照官方要求创建一个带有一些副本集的使用docker和fig设置mongodb副本集的正确方法是什么?,mongodb,docker,replicaset,fig,Mongodb,Docker,Replicaset,Fig,使用docker和fig设置mongodb副本集的正确方法是什么 我试图按照官方要求创建一个带有一些副本集的fig.yml文件,但总是被如何正确调用rs.initiate()和rs.add(“”所阻止 我找到了解释为什么我不能从shell,而不调用rs.initiate() 哦,我使用(v2.6.5)作为基本映像,没有任何修改。在设置副本集之前,首先停止mongod服务 service mongodb stop mongod--port“port”--dbpath“YOUR\u DB\u D
fig.yml
文件,但总是被如何正确调用rs.initiate()
和rs.add(“”
所阻止
我找到了解释为什么我不能从shell
,而不调用rs.initiate()
哦,我使用(v2.6.5)作为基本映像,没有任何修改。在设置副本集之前,首先停止mongod服务
service mongodb stop
mongod--port“port”--dbpath“YOUR\u DB\u DATA\u PATH”--replSet“REPLICA\u SET\u INSTANCE\u NAME”
它将在端口27017上启动名为rs0的mongod实例。现在启动命令提示符并连接到此mongod实例
在mongo客户端中,发出命令rs.initiate()以启动新的副本集
rs.initiate()
要检查副本集配置,请发出命令rs.conf()
rs.conf()
{
"_id" : "rs0"
"version" : 1,
"members" : [
{
"_id" : 0,
"host" "localhost:27017"
},
{
"_id" : 1,
"host" "localhost:27018"
},
{
"_id" : 2,
"host" "localhost:27019"
}
]
}
现在,您可以通过引用提供的主机名将其他节点添加到复制集中
rs.add("localhost:27019")
{ "ok" : 1 }
对每个剩余的复制成员执行此操作。您的复制集现在应该已启动并正在运行
要检查副本集的状态,请发出命令rs.status()
rs.status()
希望这有帮助。我也遇到过类似的问题,我就是这么做的。我用docker compose代替fig
在我的码头上
mongors:
image: mongo
ports:
- "27017:27017"
volumes:
- ./mongo:mongo
entrypoint: mongo/entrypoint.sh
在我的entrypoint.sh中:
#!/bin/bash
mongod --port 27018 --replSet rs0 --fork --syslog --smallfiles
mongo --port 27018 --eval "rs.initiate({_id : 'rs0', members : [{_id : 0, host : 'localhost:27018'}]})"
mongo --port 27018 --eval "while(true) {if (rs.status().ok) break;sleep(1000)};"
确保它是可执行的:
chmod +x mongo/entrypoint.sh
这有点老套,但很有效:)这不是关于在docker/fig上设置副本集,而是关于在测试环境中设置副本集。是的,还可以自动化过程。。。整个要点是启动fig或docker映像,而不必担心输入更多命令或检查状态。。。你刚才描述了我在问题中已经发布的链接
chmod +x mongo/entrypoint.sh