這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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)
mgo程式碼範例
根據以上的配置,如果需要指定從members 1中進行資料庫讀操作,可採取以下代碼:
session, err := mgo.Dial("localhost")if err != nil { log.Fatalln(err)}defer session.Close()session.SetMode(mgo.Eventual, true) //需要指定為Eventualsession.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)