Replica Sets搭建 服务器采用Replica Sets搭建,可参考Deploy a Replica Set
读模式 Mongod的读模式共有五种:
primary. 在主节点上进行所有的读操作 primaryPreferred. 优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。 secondary.所有的读操作在从节点上进行。 secondaryPreferred.优先在从节点进行读操作,如果所有从节点都不可用,再从主节点操作。 nearest. 根据网络延迟时间 ,就近进行读操作,不考虑节点类型。 Tag sets 允许指定一个replica set进行读操作,其中Mongod的读模式必须是以下四种之一:primaryPreferred
、secondary
、secondaryPreferred
、nearest
Tags Sets配置参考:Configure Replica Set Tag Sets 主要操作如下:
1
2
3
4
5
conf = rs.conf()
conf.members[0].tags = { "dc" : "east" , "use" : "production" }
conf.members[1].tags = { "dc" : "east" , "use" : "reporting" }
conf.members[2].tags = { "use" : "production" }
rs.reconfig(conf)
mgo代码示例 根据以上的配置,如果需要指定从members 1中进行数据库读操作,可采取以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
session, err := mgo.Dial("localhost" )
if err != nil {
log.Fatalln(err)
}
defer session.Close()
session.SetMode(mgo.Eventual, true )
session.SelectServers(bson.D{{"dc" , "east" }, {"use" , "reporting" }})
db := session.DB("test" )
col := db.C("tbl" )
data := make ([]interface {}, 10 )
col.Find(nil ).Limit(10 ).All(&data)
log.Println(data)