3. 在10.43.159.56启动MongoDB主节点法度榜样。留意后面的┞封个 “ –master ”参数,标示主节点:
- mongod –dbpath /data/MongoDBtest/master–master
输出日记如下,成功:
- [initandlisten] MongoDB starting :pid=18285 port=27017 dbpath=/data/MongoDBtest/master master=1
4. 在10.43.159.58启动MongoDB大年夜节点法度榜样。关键设备:指定主节点ip地址和端口 –source 10.43.159.56:27017 和标示大年夜节点 –slave参数:
- mongod –dbpath /data/MongoDBtest/slave–slave –source 10.43.159.56:27017
输出日记如下,成功:
日记显示大年夜节点大年夜主节点同步复制数据 :
下面我们来看看这个集群能做什么?先登录到大年夜节点shell上,履行插入数据:
- [replslave] repl: from host: 10.43.159.56:27017
如许,主大年夜构造的MongoDB集群就搭建好了,是不是很简单?
- mongo 127.0.0.1:27017
- > db.testdb.insert({"test3":"testval3"});
- not master
可以看到 MongoDB的大年夜节点是只能读,不克不及履行写操作的。
那么如不雅主办事器挂掉落,大年夜办事器可以接替工作吗?
可以试一下,强迫关掉落主节点上的MongoDB过程,登录在大年夜节点上,再次履行插入数据:
- > db.testdb.insert({"test3":"testval3"});
- not master
看来大年夜节抱病没有主动接替主节点的工作,那就只有人工处理了,停止大年夜节点,再以master的方法启动大年夜节点,因为大年夜节点上数据跟主节点一样,此时大年夜节点是可以替代主节点工作的,这属于人工切换。
此外,我们可以搭建多个大年夜节点,实现数据库的读写分别,比如主节点负责写,多个大年夜节点负责读,对于移动APP,绝大年夜部分操作都是读操作,可以实现负荷分担。
那么,搭建了这套主大年夜构造的集群是不是就能敷衍商用情况呢?我们发明照样有几个问题亟待解决的:
- 主节点挂了可否主动切换连接?今朝须要手工切换。
- 主节点的写压力过大年夜若何解决?
- 大年夜节点每个膳绫擎的数据都是对数据库全量拷贝,大年夜节灯揭捉?力会不会过大年夜?
- 就算对大年夜节点路由实施路由拜访策略可否做到主动扩大?
解决这几个问题就要靠下面介绍的副本集模式了。
副本模式
由图可以看到客户端连接到全部副本集,不关怀具体哪一台机械是否挂掉落。主办事器负责全部副本集的读写,副本集按期同步数捷报份,一旦主节点挂掉落,副本节点就会选举一个新的主办事器,这一切对于应用办事器不须要关怀。我们看一下主办事器挂掉落后的架构:
- [initandlisten] MongoDB starting : pid=17888port=27017 dbpath=/data/MongoDBtest/slave slave=1
副本集中的副本节点经由过程心跳机制检测到主节点挂掉落后,就会在集群内提议主节点的选举机制,主动选举一位新的主办事器。So Cool!让我们赶紧来安排一下!
官方推荐的副本集机械数量为至少3个(官方说副本集数量最好是奇数),那我们也按照这个数量设备测试。
1. 预备三台机械 10.43.159.56、 10.43.159.58、10.43.159.60。10.43.159.56算作副本集主节点,10.43.159.58、10.43.159.60作为副本集副本节点。
2. 分别在每台机械上建立MongoDB副本集测试文件夹
4. 分别在每台机械上启动MongoDB
给你的副本集取个名字吧,比如这里叫test:
- /data/MongoDBtest/MongoDB-linux-x86_64-2.4.8/bin/mongod --dbpath /data/MongoDBtest/replset/data --replSet test
大年夜日记可以看出副本集还没有初始化。
5. 初始化副本集
在三台机械上随便率性一台机械上岸MongoDB:
推荐阅读
大年夜多半科技界人士都认为,再过十年,无处不在的技巧将会触及一天中的每一个时刻,让我们的生活变得更有效力、更相符小我需求。这同时引出一个有趣的问题:在一个万物互联的世界里,当>>>详细阅读
本文标题:干货满满 | MongoDB集群实战攻略
地址:http://www.17bianji.com/lsqh/40477.html
1/2 1