MongoDB三节点副本集搭建
一个副本集的最小结构有用三个成员。一个三个成员的副本集可以有三个成员保存数据,或者有两个保存,一个为监督者。副本集应始终具有奇数个成员。这确保选举顺利进行。
?
1 2 3 4 5 6 7 8 |
172.17.39.186:27017 PRIMARY
172.17.39.186:27018 SECONDARY
172.17.39.186:27019 SECONDARY
或者
172.17.39.186:27017 PRIMARY
172.17.39.186:27018 SECONDARY
172.17.39.186:27019 arbitrate
|
2、下载与安装的MongoDB
进入官网,选择社区服务器进行下载
https://www.mongodb.com/download-center?jmp=nav#community
或者可以直接
?1 |
wget https: //fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.2.tgz
|
3、解压改名
?1 2 3 |
# mkdir -p /data/mongodb
# tar xvf mongodb-linux-x86_64-rhel70-4.0.2.tgz -C /data/mongodb/
# mv mongodb-linux-x86_64-rhel70-4.0.2 mongodb1
|
4、在mongodb1的文件夹下新建data,log和conf文件夹
?1 2 |
# cd mongodb
# mkdir {data,log,conf}
|
5、将mongodb1复制为mongodb2,mongodb3
?1 2 3 4 5 6 7 |
# cp -ra mongodb1 mongodb2
# cp -ra mongodb1 mongodb3
# ll
total 12
drwxr-xr-x 6 root root 4096 Sep 26 16:31 mongodb1
drwxr-xr-x 6 root root 4096 Sep 26 16:31 mongodb2
drwxr-xr-x 6 root root 4096 Sep 26 16:31 mongodb3
|
6、在三个文件夹的conf文件夹下编写配置文件“vi mongodb.conf”
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# cat mongodb1/conf/mongodb.conf
port=27017
bind_ip=172.17.39.186
logappend= true
dbpath=/data/mongodb/mongodb1/data/
logpath=/data/mongodb/mongodb1/log/r1.log
fork= true
oplogSize=2048
smallfiles= true
replSet=dbset
# cat mongodb2/conf/mongodb.conf
port=27018
bind_ip=172.17.39.186
logappend= true
dbpath=/data/mongodb/mongodb2/data/
logpath=/data/mongodb/mongodb2/log/r2.log
fork= true
oplogSize=2048
smallfiles= true
replSet=dbset
# cat mongodb3/conf/mongodb.conf
port=27019
bind_ip=172.17.39.186
logappend= true
dbpath=/data/mongodb/mongodb3/data/
logpath=/data/mongodb/mongodb3/log/r3.log
fork= true
oplogSize=2048
smallfiles= true
replSet=dbset
|
参数:
port = 27017 #mongodb端口
logappend = true#以追加的方式记录日志
dbpath = / usr / local / mongodb1 / data / master#数据存放目录
logpath = / usr / local / mongodb1 / log / master.log#日志存放目录
fork = true#后台运行
oplogSize = 2048#同步操作记录文件大小(MB)
smallfiles = true#使用较小的默认文件
replSet = dbset#副本集名称,同一个副本集,名称必须一致
7、启动
?1 2 3 |
/data/mongodb/mongodb1/bin/mongod -f /data/mongodb/mongodb1/conf/mongodb.conf
/data/mongodb/mongodb2/bin/mongod -f /data/mongodb/mongodb2/conf/mongodb.conf
/data/mongodb/mongodb3/bin/mongod -f /data/mongodb/mongodb3/conf/mongodb.conf
|
8、登陆,进入你想成为master的那台机器,进入mongodb客户端,在想成为master的mongodb的bin目录下输入“./mongo -port 对应端口”(mongo指令中不输入port默认为27017端口)
?1 |
/data/mongodb/mongodb3/bin/mongo 172.17.39.186:27017
|
9、接下来配置副本集,第一个id是副本集名称
9.1
注意:这里配置的是有两个保存数据,一个为监督者
?1 |
config={_id : 'dbset' ,members : [{_id : 1, host : '127.0.0.1:27017' },{_id : 2, host : '127.0.0.1:27018' }]}
|
回车键输出
接下来初始化副本集配置,在客户端内输入“rs.initiate( config )”
?1 |
rs.initiate( config )
|
添加仲裁服务器,在客户端输入“rs.addArb("127.0.0.1:27019") ”
?1 |
rs.addArb( "127.0.0.1:27019" )
|
可以通过查看副本集状态(输入“rs.status()”),查看三个mongodb的状态
?1 |
rs.status()
|
此时副本集已搭建完成。
9.2
注意:这里配置的是三个保存数据的副本集成员,就不再截图说明了
?1 2 3 4 5 6 |
> config={_id : 'dbset' ,members : [{_id : 1, host : '172.17.39.186:27017' },{_id : 2, host : '172.17.39.186:27018' },{_id : 3, host : '172.17.39.186:27019' }]}
回车键输出
> rs.initiate( config )
> rs.status()
此时副本集已搭建完成。
|
mongodb副本集测试
?1 2 3 4 5 6 7 8 9 10 |
/data/mongodb/bin/mongod --dbpath /data/mongodbtest/replset/data --replSet repset
如果想移除某一个节点
rs.remove( "127.0.0.1:27018" )
这个不能删除主节点
rs.reconfig()
db.getMongo().setSlaveOk()
|