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