| 
                        副标题[/!--empirenews.page--]
                         MongoDB集群有副本集及主从复制两种模式,不过主从模式在MongoDB 3.6已经彻底废弃,今天主要探讨副本集的搭建和使用,以及分片。 
  
副本集介绍 
副本集(Replica  Set)即副本的集合,在MongoDB中通过先定义一个副本集合,然后将多个节点(副本)加入到这个集合中。简单来说就是集群中包含了多份数据,保证主节点挂掉,备节点能够继续提供数据服务,实现MongoDB的数据备份及高可用。 
副本集具有以下特征: 
    - N 个节点的集群
 
    - 任何节点可作为主节点
 
    - 所有写入操作都在主节点上
 
    - 自动故障转移
 
    - 自动恢复
 
 
副本集搭建 
条件有限,我们在单机上,通过三个不同的MongoD线程来搭副本集。 
 
主节点配置如下: 
- # 指定数据库路径 
 - dbpath=/usr/local/mongodb/data/db 
 - # 使用追加的方式写日志 
 - logpath=/usr/local/mongodb/log/mongodb.log 
 - # 使用追加的方式写日志 
 - logappend = true 
 - # 绑定服务IP 
 - bind_ip=127.0.0.1 
 - # 服务器端口 
 - port = 27017 
 - # 以守护进程的方式运行MongoDB,创建服务器进程 
 - fork = true 
 - # PID File 的完整路径 
 - pidfilepath=/usr/local/mongodb/var/mongod.pid 
 - # 不启用验证 
 - noauth=true 
 - # 最大同时连接数,默认2000 
 - maxConns=2000 
 - # 同步复制的日志大小设置,单位MB 
 - oplogSize=10 
 - # 副本集名称 
 - replSet=rs0 
 
  
副本节点的配置和主节点的基本一致,需要修改一下数据库/日志/PID路径和端口号,副本集名称需一致: 
- # 指定数据库路径 
 - dbpath=/usr/local/mongodb/node/2/data/db 
 - # 使用追加的方式写日志 
 - logpath=/usr/local/mongodb/node/2/log/mongodb.log 
 - # 使用追加的方式写日志 
 - logappend = true 
 - # 绑定服务IP 
 - bind_ip=127.0.0.1 
 - # 服务器端口 
 - port = 27018 
 - # 以守护进程的方式运行MongoDB,创建服务器进程 
 - fork = true 
 - # PID File 的完整路径 
 - pidfilepath=/usr/local/mongodb/var/mongod2.pid 
 - # 不启用验证 
 - noauth=true 
 - # 最大同时连接数,默认2000 
 - maxConns=2000 
 - # 副本集 
 - replSet=rs0 
 
  
依次启动三个mongod进程: 
- gitlib@devops:/usr/local/mongodb$ ps -aux | grep mongod 
 - root 14293 0.8 2.3 1588812 92700 ? Sl 08:06 0:01 bin/mongod -f mongod.conf 
 - root 14652 3.5 2.2 1583180 89364 ? Sl 08:08 0:00 bin/mongod -f mongod2.conf 
 - root 14723 6.4 2.2 1583180 89172 ? Sl 08:08 0:00 bin/mongod -f mongod3.conf 
 
  
在主节点中,先使用rs.initiate()方法进行副本集初始化操作,再使用rs.add()方法来添加副本集的成员: 
- > rs.initiate() 
 - { 
 -     "info2" : "no configuration specified. Using a default configuration for the set", 
 -     "me" : "127.0.0.1:27017", 
 -     "ok" : 1, 
 -     "$clusterTime" : { 
 -         "clusterTime" : Timestamp(1569457173, 1), 
 -         "signature" : { 
 -             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), 
 -             "keyId" : NumberLong(0) 
 -         } 
 -     }, 
 -     "operationTime" : Timestamp(1569457173, 1) 
 - } 
 - rs0:OTHER> rs.add('127.0.0.1:27018'); 
 - { 
 -     "ok" : 1, 
 -     "$clusterTime" : { 
 -         "clusterTime" : Timestamp(1569457214, 2), 
 -         "signature" : { 
 -             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), 
 -             "keyId" : NumberLong(0) 
 -         } 
 -     }, 
 -     "operationTime" : Timestamp(1569457214, 2) 
 - } 
 - rs0:PRIMARY> rs.add('127.0.0.1:27019'); 
 - { 
 -     "ok" : 1, 
 -     "$clusterTime" : { 
 -         "clusterTime" : Timestamp(1569457219, 1), 
 -         "signature" : { 
 -             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), 
 -             "keyId" : NumberLong(0) 
 -         } 
 -     }, 
 -     "operationTime" : Timestamp(1569457219, 1) 
 - } 
 - rs0:PRIMARY> 
 
  
                                                (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |