安装过程
1.下载安装文件上传解压
2.开始修改搭建mongodb的replica set副本集
2.1上一步基本已经修改完毕,接下来我们只需要修改配置文件以及启动mongo服务
mongodb的实例配置文件基本如下:(配置文件不懂的可以看我最后附上的地址查看学习)
storage:
dbPath: "/dbdata/"
engine: "wiredTiger"
directoryPerDB: true
syncPeriodSecs: 60
journal:
enabled: true
wiredTiger:
engineConfig:
configString: "config_base=true,eviction_dirty_target=1,eviction_dirty_trigger=40,eviction_target=70,eviction_trigger=95,eviction=(threads_min=2,threads_max=4),checkpoint_sync=true"
statisticsLogDelaySecs: 0
directoryForIndexes: true
journalCompressor: snappy
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
systemLog:
destination: file
path: "/opt/mongodb/log/mongod.log"
logAppend: true
logRotate: reopen
timeStampFormat: iso8601-utc
processManagement:
fork: false
pidFilePath: "/opt/mongodb/run/mongod.pid"
operationProfiling:
slowOpThresholdMs: 100
mode: "slowOp"
sharding:
clusterRole : "shardsvr" #这里是集群中扮演的角色 mongod是shardsrv configdb是configsrv
replication:
oplogSizeMB: 10240
replSetName: "test" #这里为复制集群的集群名,可以根据业务名称去定义,但是注意一个replica set的这个参数名字必须一致
net:
port: 31001
bindIp: 0.0.0.0
wireObjectCheck: false
security:
keyFile: "/opt/mongodb/conf/keyfile"
authorization: "enabled"
2.2在配置完上面的信息之后就可以启动mongoDB
启动mongod的服务(对应的service文件再/etc/systemd/system/mongod.service)
systemctl start mongod
查看是否启动成功
ps -ef|grep mongod
如果上一步启动失败可以查看下面的日志排错
/opt/mongodb/log/mongod.log
/var/log/syslog
成功后设置mongodb自启动
systemctl enable mongod
查看是否加入成功
systemctl list-unit-files |grep mongod
重复上面的启动三台机器的mongod
2.3 上一步启动完成之后开始成立集群关系
在要选择为主的机器上一次执行下面的命令
登录mongod
mongo --port 配置文件中对应的端口号
执行命令
config = {_id: “tinydrive”, members: []}
config.members.push({_id: 0, host: “A:31001”, “priority”: 1.5})
config.members.push({_id: 1, host: “B:31001”, “priority”: 1})
config.members.push({_id: 2, host: “C:31001”, “priority”: 0,hidden:true})
rs.initiate(config)
返回ok就说明成功了 如果错误看报错信息排查
2.4 创建用户
退出mongo等一会儿在进去(等一会儿的原因是rc之间要进行主从选举)
再次登录进去
执行下面的命令
这里是创建超级用户
use admin;
db.createUser(
{
user:“username”,
pwd:“password”,
roles:[{role:“root”,db:“admin”}]
}
)
然后执行
db.auth(“用户名”,“密码”)
进来之后执行rs.status()即可查看rc复制集群状况
3.搭建configdb的replica set
config replica set的操作基本和上面一致
但是要注意配置文件中下面两个参数的改变
sharding:
clusterRole : “shardsvr” #这里是集群中扮演的角色 mongod是shardsrv,所以这里configdb是configsrv
replication:
oplogSizeMB: 10240
replSetName: “config” #这里为复制集群的集群名,可以根据业务名称去定义,但是注意一个replica set的这个参数名字必须一致
4.mongos搭建
先删除多余的配置文件
rm -f /opt/mongodb/conf/mongod.conf
rm -f /etc/systemd/system/mongod.service
mongos的话需要生成配置文件和service文件
mongos.conf配置文件内容
/opt/mongodb/conf/mongos.conf
systemLog:
destination: file
path: "/opt/mongodb/log/mongos.log"
logAppend: true
logRotate: reopen
timeStampFormat: iso8601-utc
processManagement:
fork: false
pidFilePath: "/opt/mongodb/run/mongos.pid"
net:
port: 30011
bindIp: 0.0.0.0
sharding:
configDB: "config/D:30001,E:30002,F:30003" #这里需要配置为configdb的replica set集群串(主机名如果不可以可以使用ip去替代,DEF
)
security:
keyFile: "/opt/mongodb/conf/keyfile"
/etc/systemd/system/mongos.service
[Unit]
Description=MongoDB, schema-free document-oriented database
After=time-sync.target network.target
[Service]
LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=131072
LimitNPROC=131072
LimitMEMLOCK=infinity
User=mongodb
Group=mongodb
Restart=on-failure
RestartSec=2
ExecStart=/usr/bin/numactl --interleave=all /opt/mongodb/bin/mongos --config /opt/mongodb/conf/mongos.conf
[Install]
WantedBy=multi-user.target
注意这里启动的是mongos不是mongod
systemctl start mongos
开机自启动设置
system enable mongos
5.可能会遇到的报错整理
5.1.注意数据文件以及mongodb文件目录所属组合用户为 mongodb:mongodb
5.2 service中指定的配置文件和系统中的配置文件不一致
5.3 配置文件中端口或者角色或者目录不存在
5.4 注意mongo的数据文件盘格式要为xfs
5.5 注意mongodb的高版本configdb必须为replica set
6.相关参考资料:
mongodb replica set 搭建:https://developer.ibm.com/zh/technologies/databases/articles/os-mongodb-replication/
mongodb 分片集群搭建:https://developer.ibm.com/zh/articles/os-mongodb-sharded-cluster/
mongoDB参数解析: https://my.oschina.net/u/3101282/blog/1837909