龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > nosql开发 >

【转】Mongodb Replica Sets 副本集架构实战(架设、扩充、容灾、修复、客户端代码连入)(10)

时间:2014-05-22 15:51来源:网络整理 作者:网络 点击:
分享到:
曝出了不是master的错误,之前在secondary上也是无法进行写操作的。之后修复问题或者网络,重新启动28和31的进程,就又能回复正常了。 3、衰到家了,其中

曝出了不是master的错误,之前在secondary上也是无法进行写操作的。之后修复问题或者网络,重新启动28和31的进程,就又能回复正常了。

3、衰到家了,其中一台硬盘数据损坏
我们现在模拟硬盘数据丢失的情况,比如我们的应用已经跑了一段时间了,突然30节点down机了,发现硬盘数据损坏了,我们的mongodb数据也全部丢失了,幸好我们当时建立了集群有其他兄弟备份着。
我们对30节点换了一块新硬盘,装好了系统以后准备加入这个集群,但是,且慢!
我们可以让集群中的一台服务器比如31,先脱离集群,然后将数据文件拷贝到30上,然后将30和31再加入集群,这样就不至于数据相差太大,同步过久导致整个应用缓慢或者崩溃。
这里就需要我们对副本集设置4台机器了,1台崩溃了,1台去修复了,还有2台正好1主1从抗住应用。所以如果只有3台的话,当副本集只剩下1台节点会进入secondary,就无法写入操作了,无法正常运行应用了。
总结一下具体步骤:
1、将副本集中的某一台机器A脱离副本集
2、将这台A机器的数据库文件夹copy到新安装的B机器上,或者启动mongodb副本集让这2台机器慢慢的同步,这样脱离应用的副本集同步不会拖慢整个副本集
3、同步完成以后分别将A和B机器加入到原来的副本集中即可。



3、客户端代码连入mongodb副本集
mongodb副本集主要是为了容灾备份和负载均衡用的。我们一般的互联网应用大多是读多写少,所以mongodb副本集只有一个主,而有多个从。那我们的客户端代码如何正确的连入mongodb副本集呢?下面我就以node.js利用rrestjs框架 和 node-mongodb-native 模块进行mongodb副本集的操作。
rrestjs框架官网:http://www.rrestjs.com/
官方帮助文档地址:https://github.com/christkv/node-mongodb-native/blob/master/docs/replicaset.md

只需要将rrestjs的配置文件按如下配置即可:
MongodbRC:'wzh',//如果是false表示不使用mongodb的副本集,否则为字符串,表示副本集的名称
MongodbRChost:['10.1.10.28:10001','10.1.10.30:10001','10.1.10.31:10001'],//表示mongodb副本集的ip:port数组。

然后正常使用您的应用,插入查询等操作,rrestjs自动会帮你连入mongodb副本集了

Mongodb Replica Sets 副本集架构实战(架设、扩充、容灾、修复、客户端代码连入) - snoopyxdy - snoopyxdy的博客
成功的插入了mongodb副本集数据并返回了刚才插入的内容。     转自:http://snoopyxdy.blog.163.com/blog/static/60117440201241694254441/
精彩图集

赞助商链接