使用docker和fig设置mongodb副本集的正确方法是什么?

Fel*_*ino 7 mongodb docker replicaset fig

使用docker和fig设置mongodb副本集的正确方法是什么?

我试图按照官方mongodb教程创建一个fig.yml包含一些副本集的文件,但总是被如何调用rs.initiate()rs.add("<hostname><:port>")正确阻止.

我找到了这个SO的答案,解释了为什么我不能从shell没有打电话的那一切开始rs.initiate(),所以我怎么能实现呢?

哦,我使用mongo:latest(v2.6.5)作为基本图像,没有任何修改.

SUN*_*N K -4

首先停止 mongod 服务,然后再设置副本集

 service mongodb stop
Run Code Online (Sandbox Code Playgroud)

mongod --port“PORT”--dbpath“YOUR_DB_DATA_PATH”--replSet“REPLICA_SET_INSTANCE_NAME”

 mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0 --fork
Run Code Online (Sandbox Code Playgroud)

它将在端口 27017 上启动一个名为 rs0 的 mongod 实例。现在启动命令提示符并连接到此 mongod 实例。

在 mongo 客户端中发出命令rs.initiate()来启动新的副本集。

 rs.initiate()
Run Code Online (Sandbox Code Playgroud)

要检查副本集配置,请发出命令rs.conf()

rs.conf()应具有以下内容

{
"_id" : "rs0"
"version" : 1,
"members" : [
    {
        "_id" : 0,
        "host" "localhost:27017"
    },
    {
        "_id" : 1,
        "host" "localhost:27018"
    },
    {
        "_id" : 2,
        "host" "localhost:27019"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过引用您提供的主机名将其他节点添加到复制集。

 rs.add("localhost:27019")
 { "ok" : 1 }
Run Code Online (Sandbox Code Playgroud)

对每个剩余的复制成员执行此操作。您的复制集现在应该已启动并正在运行。

要检查副本集的状态,请发出命令rs.status()

rs.status()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • 这不是关于在 docker/fig 上设置副本集,而是关于在测试环境中设置它。 (3认同)