基于复制集replset进行mongodb集群搭建
一、linux下mongodb安装
1.1 下载对应平台版本
下载地址:https://www.mongodb.com/download-center/community
1.2 解压及配置路径
# 解压
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.3.tgz
# 迁移配置路径
mkdir -p /usr/local/mongodb
mv mongodb-linux-x86_64-ubuntu1604-4.2.3 /usr/local/mongodb
# 配置数据和日志文件夹
cd /usr/local/mongodb
mkdir data
mkdir logs
二、配置不同角色节点(主节点、从节点、仲裁节点)
- 172.31.236.129:27017(primary)
- 172.31.236.129:27018(secondary)
- 172.31.236.129:27019(arbiter)
三、配置各节点信息
3.1 集群之间的复制增加keyFile认证
# 生成key
openssl rand -base64 745 >/usr/local/mongodb/mongodb-keyfile
# 该key的权限必须是600
chmod 600 /usr/local/mongodb/mongodb-keyfile
3.2 主节点(配置文件路径:/usr/local/mongodb/mongo_27017.conf)
dbpath=/usr/local/mongodb/data/27017
logpath=/usr/local/mongodb/logs/mongo_27017.log
logappend=true
journal=true # 启用日志文件,默认启用
quiet=true # 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017
fork=true # 后台运行
bind_ip=172.31.236.129 # 允许任何IP进行连接
auth=true # 是否以安全认证方式运行,默认是不认证的非安全方式
keyFile=/usr/local/mongodb/mongodb-keyfile # 指定存储身份验证信息的密钥文件的路径
3.3 从节点(配置文件路径:/usr/local/mongodb/mongo_27018.conf)
dbpath=/usr/local/mongodb/data/27018
logpath=/usr/local/mongodb/logs/mongo_27018.log
logappend=true
journal=true
quiet=true
port=27018
fork=true #后台运行
bind_ip=172.31.236.129 #允许任何IP进行连接
auth=true # 是否以安全认证方式运行,默认是不认证的非安全方式
keyFile=/usr/local/mongodb/mongodb-keyfile # 指定存储身份验证信息的密钥文件的路径
3.4 仲裁节点(配置文件路径:/usr/local/mongodb/mongo_27019.conf)
dbpath=/usr/local/mongodb/data/27019
logpath=/usr/local/mongodb/logs/mongo_27019.log
logappend=true
journal=true
quiet=true
port=27019
fork=true #后台运行
bind_ip=172.31.236.129 #允许任何IP进行连接
auth=true # 是否以安全认证方式运行,默认是不认证的非安全方式
keyFile=/usr/local/mongodb/mongodb-keyfile # 指定存储身份验证信息的密钥文件的路径
四、启动各节点
启动主节点
./bin/mongod -f mongo_27017.conf --replSet rs0
启动从节点
./bin/mongod -f mongo_27018.conf --replSet rs0
启动仲裁节点
./bin/mongod -f mongo_27019.conf --replSet rs0
五、设置各节点关系
设置主节点:
./bin/mongo --port 27017 --host 172.31.236.129
# 进去admin数据库
use admin
# 设置主节点(这里的priority设置10 优先权越大获胜为主节点)
config={_id:"rs0", members:[{_id:0,host:"172.31.236.129:27017",priority:10}]}
rs.initiate(config)
# 设置从节点
rs.add("172.31.236.129:27018")
# 设置仲裁节点
rs.addArb("172.31.236.129:27019")
# 查看集群状态
rs.status()
设置从节点(secondary节点默认是不可读的,如果需要读secondary节点,需要在secondary节点):
./bin/mongo --port 27018 --host 172.31.236.129
db.setSlaveOk()
六、命令行设置参数
如果想修改复制集的配置,也可以使用rs.reconfig(config,{"force":true})强制更新配置
--修改主机
var config = rs.config()
config.members[0].host = '172.31.236.129:27017'
config.members[1].host = '172.31.236.129:27018'
config.members[2].host = '172.31.236.129:27019'
rs.reconfig(config,{"force":true})
--修改优先权(权限越大获胜为主节点)
var config = rs.config()
config.members[0].priority = 10
config.members[1].priority = 1
config.members[2].priority = 0
rs.reconfig(config,{"force":true})
--查看replset状态
rs.status()
--查看replset配置
rs.config()
七、创建用户
./bin/mongo --port 27017 --host 172.31.236.129
# 创建用户管理的用户(赋root权限)
use admin
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);
# 为某个数据库(note)新建读写账号
use note
db.createUser(
{
user:"zhangsan",
pwd:"123456",
roles:[{role:"readWrite",db:"note"}]
}
);
八、问题
-
问题一:ERROR: child process failed, exited with error number 51
解决:https://blog.csdn.net/weixin_30772261/article/details/98744585
参考
- 部署查看:https://www.jianshu.com/p/7db58b1d143e
- 配置设置:https://www.cnblogs.com/shenshangzz/p/8261064.html
- 配置文件说明:https://www.jianshu.com/p/ba63f6c5ad04