Golang mgo驅動指定Mongo伺服器讀取

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Replica Sets搭建

伺服器採用Replica Sets搭建,可參考Deploy a Replica Set

讀模式

Mongod的讀模式共有五種:

  • primary. 在主節點上進行所有的讀操作
  • primaryPreferred. 優先在主節點上進行讀操作,如果主節點不可用,再從從節點操作。
  • secondary.所有的讀操作在從節點上進行。
  • secondaryPreferred.優先在從節點進行讀操作,如果所有從節點都不可用,再從主節點操作。
  • nearest. 根據網路延遲時間 ,就近進行讀操作,不考慮節點類型。

配置節點Tags Sets

Tag sets 允許指定一個replica set進行讀操作,其中Mongod的讀模式必須是以下四種之一:
primaryPreferredsecondarysecondaryPreferrednearest
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)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.