Golang mgo驱动指定Mongo服务器读取

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) //需要指定为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)

icattlecoder
放牛的程序猿

放牛班的程序员

455 声望
28 粉丝
0 条评论
推荐阅读
P2P分布式网络简史
ARPANET,中文称为阿帕网,一开始只是连接加州大学洛杉矶分校,斯坦福研究所,加州大学-圣塔芭芭拉和犹他大学,彼此间视为对等的计算机节点,而不非 C/S 结构。阿帕网为美国国防部高级研究计划署开发的世界上第一...

icattlecoder1阅读 5.7k

前端如何入门 Go 语言
类比法是一种学习方法,它是通过将新知识与已知知识进行比较,从而加深对新知识的理解。在学习 Go 语言的过程中,我发现,通过类比已有的前端知识,可以更好地理解 Go 语言的特性。

robin23阅读 3.3k评论 6

封面图
Golang 中 []byte 与 string 转换
string 类型和 []byte 类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。

机器铃砍菜刀24阅读 58.3k评论 2

年度最佳【golang】map详解
这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。

去去100216阅读 11.6k评论 2

年度最佳【golang】GMP调度详解
Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的. 这篇文章将通过分析...

去去100215阅读 12k评论 4

万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide8阅读 1.7k

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

放牛班的程序员

455 声望
28 粉丝
宣传栏