当前位置:网站首页 / 数据库 / 正文

[AY-Mongo 3.x]写给自己的MongoDB笔记-副本集-单机器测试[11]

时间:2015年11月10日 | 作者 : aaronyang | 分类 : 数据库 | 浏览: 1540次 | 评论 0

我是在windows上模拟的,参考的文章是:http://www.cnblogs.com/huangxincheng/archive/2012/03/04/2379755.html

 <1>:  该集群没有特定的主数据库。

 <2>:  如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能。

           好,我们现在就来试一下,首先把所有的cmd窗口关掉重新来。


blob.png

我把这3个下面的data下的db文件夹下的内容全部删了,复制出了3份,原来d盘的那个我不动他了。

这里1 我们作为仲裁服务器,2和3作为其他数据库。

2015-11-10 www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任


<1>  既然我们要建立集群,就得取个集群名字,这里就取  ayjs, --replSet表示让服务器知道ayjs下还有其他数据库,

         这里就把F盘里面的mongodb程序打开,端口为8800。指定端口为8801是ayjs集群下的另一个数据库服务器,类似发生灾难时,第二的数据库由仲裁服务器选择自动顶上

‪F:\mongodb306_2\bin\mongod --dbpath=‪F:\mongodb306_2\data\db --port 8800 --replSet ayjs/127.0.0.1:8801

blob.png

<2>开启第二个8801的,然后replSet指定 8800

‪F:\mongodb306_3\bin\mongod --dbpath=‪F:\mongodb306_3\data\db --port 8801 --replSet ayjs/127.0.0.1:8800

blob.png

<3>:  看看上面的日志红色区域,似乎我们还没有做完,是的,log信息告诉我们要初始化一下“副本集“,既然日志这么说,那我也就 这么做,随便连接一下哪个服务器都行,不过一定要进入admin集合

再次打开一个cmd

F:\mongodb306_2\bin\mongo 127.0.0.1:8800/admin

blob.png

db.runCommand(
{"replSetInitiate":{
"_id":"ayjs",
"members":[
{"_id":1,"host":"127.0.0.1:8800"},{"_id":2,"host":"127.0.0.1:8801"}
]
}}
)

blob.png

此时的8801数据库服务器,最后一行,表示连上了,因为上面的ayjs:SECONDARY>了

blob.png

2015-11-10 www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任

<4>: 开启成功后,我们要看看谁才能成为主数据库服务器,可以看到端口为8800的已经成为主数据库服务器

连8801都投票于8800,然后投票结束,成员 127.0.0.1:8800为primary主数据库

blob.png

<5>仲裁服务器 

我们知道sql server里面有一个叫做仲裁服务器,那么mongodb中也是有的,跟sql server一样,仲裁只参与投票选举,这里我们把F盘的mongodb306_1作为仲裁服务器,端口设置8799,然后指定ayjs集群中的任一个服务器端口,这里就指定8800

‪F:\mongodb306_1\bin\mongod --dbpath=‪F:\mongodb306_1\data\db --port 8799 --replSet ayjs/127.0.0.1:8800

blob.png

然后我们在admin集合中使用rs.addArb()追加即可,随便使用哪个目录下的mongo.exe只要后面的参数对就行

F:\mongodb306_2\bin\mongo 127.0.0.1:8800/admin

blob.png

添加仲裁服务器

rs.addArb("127.0.0.1:8799")

blob.png

追加好了之后,我们使用rs.status()来查看下集群中的服务器状态,图中我们可以清楚的看到谁是主,还是从,还是仲裁。

blob.png

故障恢复

我们ctrl+C退出  8800主服务器,看看8801从服务器会不会自动连上

动态演示

3.gif

静态瞬间截图,仲裁服务器开始选举,推选了8801位primary节点了

blob.png

为什么我在右上方的 界面,查看节点状态发生错误呢

blob.png

因为我把那个原来的主节点关闭了,我们用mongo.exe连接8801的就可以查看了,点一下,然后等待一下

F:\mongodb306_3\bin\mongo 127.0.0.1:8801/admin

blob.png

输入rs.status(),发现  8800的health为0了,说明挂了

blob.png


关于副本集的集群就演示到这里了。

2015-11-10 www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任

推荐您阅读更多有关于“mongodb,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘.NET,Java,Web前端,有想找想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表