Linux下MongoDB副本集搭建
2019-08-02 14:55 握瑾怀瑜 阅读(5602) 评论(2) 编辑 收藏 举报搭建副本集遇到的问题
问题一: bind_ip配置的不通 要为0.0.0.0 问题二: 没关闭防火墙 总结搭建副本集的核心步骤 1: 配置mongo.conf文件 2: 初始化副本集 3: 验证(查看副本集)
虚拟机三个服务器如下
第一步 首先关闭服务器防火墙
否则会报No route to host
查看防火墙状态 [root@localhost /]# firewall-cmd --state running 关闭防火墙 [root@localhost /]# systemctl stop firewalld.service 查看防火墙状态 [root@localhost /]# firewall-cmd --state not running
第二步 服务器安装mongo省略
第三步 在三台服务器的bin目录下分别新建配置文件mongo.conf
服务器130(主节点)的配置文件mongo.conf 如下
port = 27017 #数据目录 dbpath = /usr/local/mongodb/data/db #日志所在目录 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志输出方式 logappend = true # 在后台启动 fork=true # 0.0.0.0表示任意IP均可连接 bind_ip=0.0.0.0 #副本集名称 replSet=rs
服务器129(辅助节点)的配置文件mongo.conf 如下
port = 27017 #数据目录 dbpath = /usr/local/mongodb/data/db #日志所在目录 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志输出方式 logappend = true # 在后台启动 fork=true # 0.0.0.0表示任意IP均可连接 bind_ip=0.0.0.0 #副本集名称 replSet=rs
服务器128(仲裁节点)的配置文件mongo.conf 如下
port = 27017 #数据目录 dbpath = /usr/local/mongodb/data/db #日志所在目录 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志输出方式 logappend = true # 在后台启动 fork=true # 0.0.0.0表示任意IP均可连接 bind_ip=0.0.0.0 #副本集名称 replSet=rs
三个配置文件里最重要的是指定相同的副本集的名称
#副本集名称 replSet=rs rs(名字任意)为此次搭建的副本集的名称
第四步 分别启动三台服务器的mongo服务
任选一台服务器连接 进入admin库 执行副本集初始化操作 如下
副本集的名称为rs priority 的数值越大越活跃 数值最大的为主节点
> use admin switched to db admin > > rsconf = { ... ... _id: "rs", ... ... members: [ ... ... { ... ... _id: 0, ... ... host: "192.168.23.130", ... "priority":2 ... ... }, ... ... { ... ... _id: 1, ... ... host: "192.168.23.129", ... "priority":1 ... ... } ... ... ] ... ... } { "_id" : "rs", "members" : [ { "_id" : 0, "host" : "192.168.23.130", "priority" : 2 }, { "_id" : 1, "host" : "192.168.23.129", "priority" : 1 } ] } > rs.initiate(rsconf) { "ok" : 1, "operationTime" : Timestamp(1563524874, 1), "$clusterTime" : { "clusterTime" : Timestamp(1563524874, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
第五步 验证副本集
查看主节点如下
查看副本集状态
添加一个服务器为仲裁节点
查看各个服务器状态信息
验证副本集的数据一致性 主节点向admin数据库插入一个集合名为test的数据
登录其他两台服务器的admin 的test集合 查看是否有此数据 如下
辅助节点查看如下
仲裁节点如下 仲裁节点不能同步数据 只支持投票选举
辅助节点初次同步数据会提示错误如下 解决方法如下 rs.slaveOk() 或者 db.getMongo().setSlaveOk()
第六步: mongo启动服务 与 mongo关闭服务
进入bin目录 启动mongodb服务 root@river-NUC8i7HNK:/usr/local/mongodb/bin# ./mongod -f mongo.conf 停止mongodb服务 root@river-NUC8i7HNK:/# mongod -f /usr/local/mongodb/bin/mongo.conf --shutdown killing process with pid: 14185
加油的人生不解释