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: