使用mgo连接到副本集

时间:2014-06-04 15:14:25

标签: mongodb go mgo replicaset

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

但是,我很难从mgo包中使用Dial实际连接到副本集。下面的代码段会显示消息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包连接到副本集?

1 个答案:

答案 0 :(得分:2)

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

以下是该流程的教程:

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

通常一个好主意是,每当你遇到从代码中运行针对mongodb的问题时尝试连接并通过mongo shell做同样的事情 - 它可以节省你很多时间和精力。

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

mlaunch --init --replicaset

这将初始化并启动名为" replset"

的3节点副本集