搭建步骤
- 1.准备三台虚拟机服务器
- 2.添加replSet配置
- 修改`mongodb.conf`文件
- 然后分别启动三台服务器:
- 3.初始化复制集
- 4.查看集群状态
- 5.测试
- 6.关闭数据库
- 7. 主复制集添加仲裁者(arbiter)
1.准备三台虚拟机服务器
各自安装好mongoDB
—>技巧:可先准备配置好一台,进行克隆
注:为了保证复制集中三个服务器之间正常连接,请保证三个服务器的防火墙都已关闭
192.168.130:27017
192.168.131:27017
192.168.132:27017
为操作方便,可更改主机名和ip地址
#更改主机名
vim /etc/sysconfig/network
#更改ip
setup
2.添加replSet配置
修改mongodb.conf
文件
添加replSet配置
(三台都需要修改成同一个名称)
#复制集名称 replSet=rep1
此时三台mongodb的mongodb.conf的配置文件如下所示:
#数据库路径
dbpath = /home/admin/myapps/mongodb/mongodb_data
#日志路径
logpath = /home/admin/myapps/mongodb/logs/mongodb.log
#端口号
port = 27017
fork = true
#修改:保证外机可以访问
bind_ip=0.0.0.0
#复制集名称
replSet=rep1
然后分别启动三台服务器:
[root@xj0927 bin]# ./mongod -f mongodb.conf
[root@xj0928 bin]# ./mongod -f mongodb.conf
[root@xj0929 bin]# ./mongod -f mongodb.conf
3.初始化复制集
登录任意一台执行初始化操作:
rs.initiate({_id:'rep1',members:[{_id:1,host:'192.168.77.130:27017'}, {_id:2,host:'192.168.77.131:27017'},{_id:3,host:'192.168.77.132:27017'}]})
说明: _id 指复制集名称,members指复制集服务器列表,数组中的_id是服务器唯一的id,host服务器主机ip
4.查看集群状态
rs.status()
5.测试
#添加数据
db.users.insert({"name":"lisi","age":11})
#查询数据
db.users.find()
#切换到从数据库查询数据
如果不允许查询,是因为默认情况下从数据库是不允许读写操作的,需要设置。
>rs.slaveOK() 执行该命令后可以查询数据
6.关闭数据库
先切换到admin数据库: use admin
#关闭主数据库,注意从数据库的变化
>db.shutdownServer()
7. 主复制集添加仲裁者(arbiter)
现在我们的环境是一主两从,仲裁者对偶数集群有效。需要停止一个从机,在主服务器中运行下面命令
#删除从节点
rs.remove("ip:端口号")
在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即
可
#添加仲裁者节点
rs.addArb("ip:端口号")
rs.addArb("192.168.77.132:27017")
此时,查看集群状态:一主一从一仲裁