2

我正在使用在端口 27017、27018 和 27019 上mtools启动具有 3 个节点 ( ) 的副本集。mlaunch --replicaset

但是,我实际上很难使用Dialmgo 包连接到副本集。下面的代码片段会出现以下消息no reachable servers

type Person struct {
    Name   string `bson:"name"`
    Age    int    `bson:"age"`
}

func main() {
    session, err := mgo.Dial("localhost:27017,localhost:27018,localhost:27019")
    if err != nil {
            panic(err)
    }
    c := session.DB("mydb").C("testCollection")
    c.Insert(&Person{Name: "Foo", Age: 20})
}

究竟如何使用 mgo 包连接到副本集?

4

1 回答 1

2

您需要运行rs.initiate()以完成初始副本集配置。这将启动一个成员副本集。然后,您rs.add()使用正确的参数运行主机以使其他成员联机。

以下是该过程的教程:

http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

通常一个好主意,当您在代码中对 mongodb 运行某些东西时遇到问题时,请尝试通过 mongo shell 连接并执行相同的操作 - 它可以为您节省大量时间和精力。

要使用 mlaunch 重新启动此过程,您需要以这种方式运行它:

mlaunch --init --replicaset

这将初始化并启动一个名为“replset”的 3 节点副本集

于 2014-06-04T16:51:51.290 回答