注意:mongo5.0+开始,需要cpu支持avx指令
不支持的话运行mongod -f mongo.conf出现报错 Illegal instruction (core dumped)的错误提示。如果cpu不支持,就只能用4.x部署了。
# 查看cpu是否支持avx,支持的话,会有打印
cat /proc/cpuinfo | grep avx
节点规划
Primary 172.25.6.75 27017
Secondary1 172.25.6.76 27017
Secondary2 172.25.6.77 27017
一、前期准备
1、下载安装包
1.1 数据库
1.2 mongosh
mongodb的命令行工具,6.x需要单独下载
1.3 tools
包含mongodump,mongoexport、mongostat等工具
2、服务器环境初始化
2.1 修改hostname
hostnamectl set-hostname mongo1
hostnamectl set-hostname mongo2
hostnamectl set-hostname mongo3
2.2 配置hosts
vi /etc/hsots
172.25.6.75 mongo1
172.25.6.76 mongo2
172.25.6.77 mongo3
2.3 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
二、安装
1、解压
mkdir /data
tar -zxvf mongodb-database-tools-rhel70-x86_64-100.7.2.tgz
mv mongodb-database-tools-rhel70-x86_64-100.7.2 mongotools
tar -zxvf mongodb-linux-x86_64-rhel70-6.0.6.tgz
mv mongodb-linux-x86_64-rhel70-6.0.6 mongo6rs
tar -zxvf mongosh-1.9.1-linux-x64.tgz
mv mongosh-1.9.1-linux-x64 mongosh
2、添加环境变量
cd ~
vi .bash_profile
export PATH=/data/mongosh/bin:$PATH
export PATH=/data/mongotools/bin:$PATH
export PATH
source .bash_profile
3、配置文件
3.1 创建相关文件夹
mkdir -p /data/mongo6rs/{db,log,key}
3.2 生成key
#在节点1操作
cd /data/mongo6rs/key
openssl rand -base64 756 > mongo.key
chmod 400 mongo.key
# 将key文件发送到另外2个节点的相同位置
scp /data/mongo6rs/key/mongo.key mongo2:/data/mongo6rs/key/
scp /data/mongo6rs/key/mongo.key mongo3:/data/mongo6rs/key/
3.3 配置conf文件
vi /data/mongo6rs/mongod.conf
# 设置数据文件的存放目录
dbpath=/data/mongo6rs/db
# 设置日志文件的存放目录及其日志文件名
logpath=/data/mongo6rs/log/mongodb.log
# 设置为以守护进程的方式运行,即在后台运行
fork=true
#使用追加的方式写日志
logappend=true
#每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)
journal=true
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复
#存储引擎有mmapv1、wirtiger、mongorocks
storageEngine=wiredTiger
#最大同时连接数
maxConns=1000
#绑定ip
bind_ip= 0.0.0.0
#端口
port=27017
# 设置副本集名称
replSet=mongors
#是否需要认证,如果启用,则需要创建mongodb账号密码,使用账号密码才可以远程访问
auth = true
#key文件
keyFile=/data/mongo6rs/key/mongo.key
3.4 启动3个节点的mongod
/data/mongo6rs/bin/mongod --config /data/mongo6rs/mongod.conf
3.5 集群初始化
在主节点上运行
[root@mongodb1 mongo4rs]# mongosh
test> use admin
switched to db admin
rs.initiate({
_id:"mongors",
members:[
{_id:0,host:"172.25.6.75:27017",priority:3},
{_id:1,host:"172.25.6.76:27017",priority:2},
{_id:2,host:"172.25.6.77:27017",priority:1}
]
});
#返回OK:1表示初始化成功
{ ok: 1 }
#查看集群状态
rs.status();
如果想初始化一个仲裁节点
rs.initiate({ //复制集初始化
_id:"rs0", //复制集的名称 与几个配置文件相同
members:[ //复制集成员信息
{_id:0,host:"127.0.0.1:27017",priority:3}, //_id唯一标记 priority权重,越大优先级越高。host主机地址
{_id:1,host:"127.0.0.1:27018",priority:2},
{_id:2,host:"127.0.0.1:27019",priority:1},
{_id:3,host:"127.0.0.1:27020",arbiterOnly:true} //arbiterOnly:是否是仲裁节点,权重越高越能成为主节点
]
});
3.6 创建admin用户
db.createUser({
user: "admin",
pwd: "admin",
roles: [
{ role: "root", db: "admin"}
]
});