MongoDB设置 Replication Sets 复制集

MongoDB 高可用可用分两种 :

Master-Slave 主从复制 :只需要在某一个服务启动时加上–master 参数, 而另一个服务加上–slave 与–source 参数, 即可实现同步。

MongoDB的最新版本已不再推荐此方案。

Replica Sets 复制集 :MongoDB 在 1.6 版本对开发了新功能 replica set,这比之前的 replication 功能要强大一 些,增加了故障自动切换和自动修复成员节点,各个 DB 之间数据完全一致,大大降低了维 护成功。auto shard 已经明确说明不支持 replication paris,建议使用replica set,replica set 故障切换完全自动。

Replica Sets 的结构非常类似一个集群 ,其中一个节点如果出现故障, 其它节点马上会将业务 接过来而无须停机操作。

192.168.110.131(node1)

192.168.110.132(node2)

192.168.110.133(node3)

官方文档:

部署复制集:

一、MongoDB安装
   
    [root@node1 ~]# vim /etc/yum.repos.d/Mongodb.repo


    [mongodb-org-3.4]
 name=MongoDB Repository
 baseurl=https://repo.mongodb.org/yum/RedHat/$releasever/mongodb-org/3.4/x86_64/
 gpgcheck=1
 enabled=1
 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc


    [root@node1 ~]# yum install -y mongodb-org


    [root@node1 ~]# service mongod start
 Starting mongod:                                          [  OK  ]
   
    [root@node1 ~]# ps aux|grep mong
 mongod    1361  5.7 14.8 351180 35104 ?        Sl  01:26  0:01 /usr/bin/mongod -f /etc/mongod.conf


 更改数据存放目录:


    [root@node1 ~]# mkdir -p /mongodb/data
 [root@node1 ~]# chown -R mongod:mongod /mongodb/
 [root@node1 ~]# ll /mongodb/
 total 4
 drwxr-xr-x 2 mongod mongod 4096 May 18 02:04 data


   
    [root@node1 ~]# grep -v "^#" /etc/mongod.conf |grep -v "^$"
 systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
 storage:
  dbPath: /mongodb/data
  journal:
    enabled: true
 processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
 net:
  port: 27017
  bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.


    [root@node1 ~]# service mongod start
 Starting mongod:                                          [  OK  ]
   
    node2,node2与上面一样


二、配置 Replication Sets
   
    介绍一下涉及到的参数


 --oplogSize 日志操作文件的大小
 --dbpath  数据文件路径


 --logpath  日志文件路径


 --port        端口号,默认是27017.我这里使用的也是这个端口号.


 --replSet  复制集的名字,一个replica sets中的每个节点的这个参数都要用一个复制集名字,这里是test.


 --replSet test/  这个后面跟的是其他standard节点的ip和端口


 --maxConns  最大连接数


 --fork      后台运行


 --logappend  日志文件循环使用,如果日志文件已满,那么新日志覆盖最久日志。


 --keyFile      标识同一集群的认证私钥


 其中在启动节点时一定要加上oplogSize 的参数 为其设置大小,不然在64位操作系统上的mongodb,oplogs都相当大-可能是5%的磁盘空间。
 要根据情况设置个合理的值。
   
    v3.4.4上的参数:


    [root@node1 ~]# vim /etc/mongod.conf


 replication:
    oplogSizeMB: 1024
    replSetName: rs0
   


    使用Keyfile存取控制部署复制集:


    openssl rand -base64 756 > <path-to-keyfile>
 chmod 400 <path-to-keyfile>


 Configuration File


 If using a configuration file, set the security.keyFile option to the keyfile’s path, and the replication.replSetName option to the replica set name:


 security:
  keyFile: <path-to-keyfile>
 replication:
  replSetName: <replicaSetName>


 Command Line


 If using the command line option, start the mongod with the --keyFile and --replSet parameters:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d63e6ebf4a92b37e2f81522de35bff98.html