我使用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包连接到副本集?
答案 0 :(得分:2)
您需要运行rs.initiate()
才能完成初始副本集配置。这将启动一个成员副本集。然后,使用正确的主机参数运行rs.add()
,以使其他成员联机。
以下是该流程的教程:
http://docs.mongodb.org/manual/tutorial/deploy-replica-set/
通常一个好主意是,每当你遇到从代码中运行针对mongodb的问题时尝试连接并通过mongo shell做同样的事情 - 它可以节省你很多时间和精力。
要使用mlaunch重新启动此过程,您需要以这种方式运行它:
mlaunch --init --replicaset
这将初始化并启动名为" replset"
的3节点副本集