MongoDB   发布时间:2019-11-06  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了双十一来了,别让你的mongodb宕机了大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

        好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀验,

我们项目中会有一个wcf集群,而集群地址则放在mongodb中,所以mongodb的核心地位可想而知,如果mongodb挂掉,整个项目也就陷入

瘫痪,想让mongodb不宕机,最简单的方法就是要做双机热备,跟传统的关系型数据库的双机热备模式一样,一个主服务器,一个备份服务器,

一个仲裁服务器。如果热备集群中的主服务器宕掉,会有仲裁服务器参与投票来选出一台作为主服务器,我想这个大家都比较清楚,下面我们来

实战一下,最后会奉献源代码。

1. 准备工作

  为了做到最简化搭建,我就做一个主,一个备,一个仲裁就好了,然后最简化配置信息都放在mongodb.conf文件中,如下图:

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/4fdb99e51052317149b7de709bc8ab8f.png" >

从上图中可以看到,三个mongodb,我建立了对应的三个文件夹来存放对应的三个db,其中“主服务器”的端口为27000,“备服务器“的端口为

27001,”仲裁服务器“端口为27002。 具体mongodb.conf内容如下:

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/b6862e48182059ba2d8d07b13b06638c.png" >

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/d2fab593c024b874dadbc08865da3c79.png" >

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/c0f2a9e04a5897fadc9392afc9eacf48.png" >

  

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/409f437fbecac306a4d8a512fc85fcaf.png" >

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/b2130d610a5e788de18331cc11f03f67.png" >

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/4bbd68d1e6fb532476054d3f03c475ce.png" >

现在三台服务器都开启起来了,细心的你会发现,三个控制台都有这么一段英文单词” replSet info you may need to run replSeTinitiate“。。。

既然都这么说了,我现在就去run这个func。

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/eec6d1e452b0ccab2aef00677eb0c0a9.png" >

<div class="cnblogs_code">

{
    Tinitiate{
        :{
                ::{
                :: 

配置完了之后,然后我们把“仲裁服务器【27002】”加入到“datamip”这个双机热备分集群中。

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/4556e8dcc43ec0240e3fea74b6bcea1b.png" >

<div class="cnblogs_code">

rs.addArb( { host: } )

这个命令可以参下官网的介绍:https://docs.mongodb.com/manual/reference/command/replSeTinitiate/   好了,现在大致配置好了,接下

来我们用rs.Status()来查看下当前“主,备,仲裁”的分布情况。

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/8fac0e14d63e6afc6f2272d561c200e4.png" >

从图中你应该看到了【27000】成为了主服务器,【27001】成为了备服务器,【27002】成为了仲裁服务器,到目前为止,搭建完成,是不是有

一个很爽的感觉呢???

  既然mongodb的双机热备已经做好了,我们驱动也必须支持,这样我们才能够嗨,对伐???其实在配置中使用也很简单,里面有一个

@H_205_0@mongoClientSetTings,你需要配置一下”ReplicaSetName“和”Servers“列表即可,核心代码如下:

Helper() { ips = connectionString.Split(); servicesList = List); ( ip { host = ip.Split()[ port = Convert.ToInt32(ip.Split()[); servicesList.Add(); setTing = Tings(); setTing.ReplicaSetName = setTing.Servers =servicesList; }

其中ips的信息是配置在app.config中。

Tings Tings

然后我简单的封装了下mongodb。

https://cn.js-code.com/res/2019/02-17/00/1c53668bcee393edac0d7b3b3daff1ae.gif" alt="">https://cn.js-code.com/res/2019/02-17/00/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
m.Common { MongoDBHelper { String connectionString = ConfigurationManager.AppSetTings[ MongoClientSetTings setTing = MongoServer server = String tablename = String databasename = Helper() { ips = connectionString.Split(); servicesList = List); ( ip { host = ip.Split()[ port = Convert.ToInt32(ip.Split()[); servicesList.Add(); setTing = Tings(); setTing.ReplicaSetName = setTing.Servers =servicesList; MongoDBHelper(String databasename,StringName) { .databasename =ename; .tablename =ename; server = Ting).GetServer(); Remove(Expression>>C) { { database =Name); collection = database.GetCollectionName); query = Query); result =); result.Response[].AsInt32 > ? : false X) { false { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); result =); result.Response[].AsInt32 > ? : false X) { false 单条插入 { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); result =); result.DocumentsAffected > X) { false 单条覆盖,如果不存在插入,如果存在覆盖 在插入,如果存在覆盖 { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); result =); result.DocumentsAffected > X) { false 批量插入 Insert(IEnumerable { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); ); X) { false 批量查询 List Search(Expression>> func, forcemaster = false { list = List); { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); list = collection.Find(QueryC)).ToList(); { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); list = collection.Find(QueryC)).ToList(); X) { 单条查询 T SearchOne(Expression forcemaster = false { T t = ); 197 { { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); t = collection.FindOne(QueryC)); { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); t = collection.FindOne(QueryC)); X) { List { list = List); { database = server.GetDatabase(databaseName); collection = database.GetCollectionName); list =); X) { }

1. 首先向mongodb中插入一条记录,dbname=mydb,tablename=test,插入后我们用mongodUVE看一下数据:

{ { Main(String { MongoDBHelper Helper = MongoDBHelper(,); Helper.Save( { SendLastTime =datetiR_435_11845@e.Now, ShopID = ); { ObjectId _id { ; ShopID { ; datetiR_435_11845@e SendLastTime { ; }

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/c9078e042d2bb0014922045661086d15.png" >

2. 然后我把【27000】 这个priMary关闭掉,通过rs.Status看看“主备情况”。

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/e06c837601bcecd994259f0bdd907a05.png" >

3. 接下来,我们继续用mongodbHelper执行一下search,看是否能捞取到数据,如果可以,说明一台机器挂了没关系,这个“主备集群”还是活的。

title="双十一来了,别让你的mongodb宕机了" alt="双十一来了,别让你的mongodb宕机了" src="https://cn.js-code.com/res/2019/02-17/00/ec5434373ca440317f42d01389e8536c.png" >

是不是很牛逼的感觉,然挂了一台,我的客户端程序还是可以继续从mognodb中获取到刚才插入的数据,好了,大概就说这么多,洗洗睡了,

http://files.cnblogs.com/files/huangxincheng/ConsoleApplication2.zip" target="_blank">--文件下载--

大佬总结

以上是大佬教程为你收集整理的双十一来了,别让你的mongodb宕机了全部内容,希望文章能够帮你解决双十一来了,别让你的mongodb宕机了所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:
猜你在找的MongoDB相关文章