一、前言
因mongodb版本过低检测出bug,要对mongodb进行版本升级,之前没做过,这里做一下完整记录
ps1:mongodb大版本升级是不能夸版本的,比如3.2不能直接升级到5.0,要依次升级
ps2:补丁版本是可以跨着升级的,比如3.2.4直接升级到3.2.22
二、安装
1、现在官网下载服务器的3.2.4版本
2、
# 创建目录
mkdir /usr/local/mongodb
# 上传3.2.4的mongo并解压到这个目录下
# 在目录下创建data、log、etc三个目录,分别用来存放数据、日志和配置文件
cd /usr/local/mongodb
mkdir data
mkdir log
mkdir etc
# 在etc下创建配置文件
cd etc
vi mongodb.conf
3、mongodb.conf内容
# 数据存储目录
dbpath=/usr/local/mongodb/data
# 日志存储目录
logpath=/usr/local/mongodb/log/mongodb.log
# 端口
port=27017
# 是否后台运行
fork=true
# 是否开启日志持久存储
journal=false
# 存储引擎
storageEngine=mmapv1
详解:https://www.cnblogs.com/xibuhaohao/p/12580331.html
4、第一次启动
# 第一次启动时不需要密码的
cd /usr/local/mongodb/bin/
./mongod --config /usr/local/mongodb/etc/mongodb.conf
#会给一个进场号,看到successfully字样代表启动成
# 执行命令进入mongodb的shell交互
./mongo
# 开始创建一个用户并给予权限
use admin;
db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
# 具体权限相关百度看一下
# 执行这条命令可以看到刚才创建的用户
show users;
5、添加完权限用户后,需要关闭服务,以权限重启mongo
# 关闭服务不可以直接kill服务,如果kill掉了需要去data/db目录下删除mongo.lock文件
db.shutdownServer();
# 权限不够的话这里会报错,关闭成功后可以通过端口和ps检查一下
# 重启前需要编辑配置文件添加 auth=true
vi /usr/local/mongodb/etc/mongodb.conf
# 添加完毕保存后需要重新启动mongo
./mongod --config /usr/local/mongodb/etc/mongodb.conf
# 再次进入shell
use admin;
# 输入密码返回1正确
db.auth("root","123456")
# 至此安装完毕,可以创建自己的库了
三、配置环境变量
# 编辑profile,添加
vi /etc/profile
export PATH=$PATH:/usr/local/mongodb/bin
# 保存再source一下
source /etc/profile
# 建立软连接
ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
四、设置开机启动
vi /etc/rc.d/init.d/mongod
# 写入以下内容
start() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf
}
stop() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo
$"Usage: $0 {start|stop|restart}"
exit 1
esac
# 保存后给予权限
chmod +x /etc/rc.d/init.d/mongod
# 测试启动
service mongod start/stop/restart
# 导入命令
./mongorestore -d admin -u root -p 123456 --drop /root/sd/root/sd/admin
# 导出命令
./mongodump -d admin -u root -p 123456 -o /root/
# 导出单个集合
./mongoexport -d admin -c role -o /root/role.json -u root -p 123456
# 导入单个集合
./mongoimport -u root -p 123456 -d admin -c role --type=json --file /root/role.json
五、升级补丁版本
# 停止服务
./mongod --config /usr/local/mongodb/etc/mongodb.conf --shutdown
# 从官网下载新的补丁版本,并解压
# 把其中的bin直接替换旧的bin
# 然后直接启动
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf
六、集群升级补丁版本
# 和单机版本升级一样,可能需要降级
rs0:PRIMARY> rs.stepDown()
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1598524885, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1598524885, 1)
}
rs0:SECONDARY>