Linux中部署Mongodb副本集
提示:
以下操作步骤较多,请耐心阅读。
关于理论部分请参考上篇浅谈mongodb副本集。
1、 准备
192.168.102.110 master
192.168.102.111 slave1
192.168.102.112 slave2
以下操作以常用的1主2从3台机器为例
2、 操作
以master为例,配置好一台再scp到slave1、slave2
2.1、准备好mongodb

2.2、创建数据库目录和日志文件、配置文件、mongo.pid文件
[root@odysee mongodb4.0]# mkdir data/db -p
[root@odysee mongodb4.0]# mkdir {etc,logs}
[root@odysee mongodb4.0]# touch logs/mongodb.log
[root@odysee mongodb4.0]# touch etc/mongodb.conf

创建mongo.pid文件
touch mongo.pid

2.3、配置mongodb.conf文件
port=27017
bind_ip=192.168.102.110
dbpath=/root/General/mongodb4.0/data/db/
logpath=/root/General/mongodb4.0/logs/mongodb.log
pidfilepath=/root/General/mongodb4.0/mongo.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
#auth=true
#keyFile=/root/General/mongodb4.0/keyfile
#副本集名字
replSet=odysee

3、 编写启动脚本
[root@odysee mongodb4.0]# vi /etc/init.d/mongod

写入
#!/bin/bash
# chkconfig: - 64 36
# description: this is mongod
case $1 in
start)
/root/General/mongodb4.0/bin/mongod --maxConns 20000 --config /root/General/mongodb4.0/etc/mongodb.conf
;;
stop)
/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.shutdownServer()"
#/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.auth('system', '123456');db.shutdownServer()"
;;
status)
/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.stats()"
#/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.auth('system', '123456');db.stats()"
;; esac

启动master节点
注意:
给mongod执行的权限
chmod a+x /etc/init.d/mongod
/etc/init.d/mongod start

4、 Scp mongodb4.0和mongod.conf文件到slave1和slave2
将mongodb4.0 远程cp的slave1
scp -r ~/General/mongodb4.0/ root@192.168.102.111:~/General/

将mongodb4.0 远程cp的slave2
scp -r ~/General/mongodb4.0/ root@192.168.102.112:~/General/

将mongod.conf 远程cp的slave1
scp /etc/init.d/mongod root@192.168.102.111:/etc/init.d/

将mongod.conf 远程cp的slave2
scp /etc/init.d/mongod root@192.168.102.112:/etc/init.d/

修改slave1 mongodb.conf的ip

修改slave2 mongodb.conf的ip

修改slave1 mongod的ip

修改slave2 mongod的ip

启动slave1
/etc/init.d/mongod start

启动slave2
/etc/init.d/mongod start

5、配置主节点
5.1、利用mongo登录
bin/mongo 192.168.102.110


5.2、初始化副本集,设置本机为主节点
rs.initiate()

rs.conf()

注意:
执行上面的两个命令后,前缀已经改成odysee:PRIMARY>
5.3、添加副本集从节点
添加slave1
rs.add("192.168.102.111:27017")

添加slave2
rs.add("192.168.102.112:27017")

5.4、设置节点优先级
查看节点顺序
cfg = rs.conf()


设置节点优先级
odysee:PRIMARY> cfg.members[0].priority = 1
1
odysee:PRIMARY> cfg.members[1].priority = 1
1
odysee:PRIMARY> cfg.members[2].priority = 2
2
//使配置生效
odysee:PRIMARY> rs.reconfig(cfg)
注意:
主节点发生故障时,优先级高的节点就会转变为主节点接管服务。
提示:
副本集通过设置priority决定优先级,默认优先级为1。
priority值是0到100之间的数字,数字越大优先级越高。
若priority=0,则此节点永远不能成为主节点primay。
6、配置slave1和slave2
Slave1
bin/mongo 192.168.102.111
//设置Slave1为只读
odysee:SECONDARY> db.getMongo().setSlaveOk()
odysee:SECONDARY>

Slave2
bin/mongo 192.168.102.112
//设置Slave2为只读
odysee:SECONDARY> db.getMongo().setSlaveOk()
odysee:SECONDARY>

7、设置数据库账号
添加两个管理员账号:
一个系统管理员:system
一个数据库管理员:administrator
在master操作
db.createUser({user:"system