To upgrade an existing MongoDB deployment to 4.2 from 3.6
准备 mongo rpm
step1 中控机操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| mkdir -p /data/version_pkg/mongodb
cd /data/version_pkg/mongodb
cat > wget.list <<EOF https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.8-1.el7.x86_64.rpm https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-shell-4.2.8-1.el7.x86_64.rpm https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-server-4.0.18-1.el7.x86_64.rpm https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-shell-4.0.18-1.el7.x86_64.rpm EOF
wget -i wget.list echo ${MONGODB_IP[@]} | xargs -n1 | xargs -i -P 0 rsync -a /data/version_pkg/mongodb/ root@{}:/data/version_pkg/mongodb/
|
upgrade 3.6 - 4.0
step2 中控机上确认 primary 机器 ip
1 2 3 4 5 6 7 8 9 10 11 12 13
| /data/src/service/mongo/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS \
mongodb://mongodb.service.consul:27017/admin?replicaSet=rs0 --shell <<EOF
db.isMaster()
EOF
yum -y install mongodb-org-shell-4.0.18-1.el7.x86_64.rpm
|
step3 以下在所有 secondary 上操作
1 2 3
| yum -y install mongodb-org-shell-4.0.18-1.el7.x86_64.rpm mongodb-org-server-4.0.18-1.el7.x86_64.rpm
|
1. 确认版本为 4.0
1 2 3 4 5
| /usr/bin/mongo --version | head -n1
/usr/bin/mongod --version | head -n1
|
2. 停3.6进程
1 2 3 4 5 6 7
| source /data/install/utils.fc
source control.rc
stop_mongodb; removecron_for mongodb
|
4. 同步配置、更新字段
1 2 3 4 5 6 7 8 9
| rsync -a /data/bkee/etc/mongodb.yaml /etc/mongod.conf
sed -i 's#pidFilePath: .*#pidFilePath: /var/run/mongodb/mongod.pid#' /etc/mongod.conf
sed -i 's#path: .*#path: /var/log/mongodb/mongod.log#' /etc/mongod.conf
chown -R mongod:mongod /data/bkee/public/mongodb
|
5. 启动 4.0
1 2 3
| systemctl start mongod.service
|
6. 观察进程状态,日志是否有异常
1 2 3 4 5
| systemctl status mongod.service
tail -f /var/log/mongod/mongod.log
|
step4 在 primary 上操作
1. 下线 primary
1 2 3 4 5 6 7 8 9 10 11
| /data/bkee/service/mongo/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS \
--port $MONGODB_PORT --authenticationDatabase admin --shell <<EOF
rs.stepDown()
rs.status()
EOF
|
2. 确认已下线
3. 安装 4.0
1 2 3
| yum -y install mongodb-org-shell-4.0.18-1.el7.x86_64.rpm mongodb-org-server-4.0.18-1.el7.x86_64.rpm
|
3. 确认版本为 4.0
1 2 3 4 5
| /usr/bin/mongo --version | head -n1
/usr/bin/mongod --version | head -n1
|
4. 停3.6
1 2 3 4 5 6 7
| source /data/install/utils.fc
source control.rc
stop_mongodb; removecron_for mongodb
|
5. 同步配置、更新字段
1 2 3 4 5 6 7 8 9
| rsync -a /data/bkee/etc/mongodb.yaml /etc/mongod.conf
sed -i 's#pidFilePath: .*#pidFilePath: /var/run/mongodb/mongod.pid#' /etc/mongod.conf
sed -i 's#path: .*#path: /var/log/mongodb/mongod.log#' /etc/mongod.conf
chown -R mongod:mongod /data/bkee/public/mongodb
|
6. 启动4.0
1 2 3
| systemctl start mongod.service
|
7. 观察进程状态,日志是否有异常
1 2 3 4 5
| systemctl status mongod.service
tail -f /var/log/mongodb/mongod.log
|
8. 开启 4.0 的功能
1 2 3 4 5 6 7 8 9
| /usr/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS mongodb://mongodb.service.consul:27017/admin?replicaSet=rs0 --shell <<EOF
db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
rs.status()
EOF
|
upgrade 4.0 - 4.2
step5 中控机上确认 primary 机器 ip
1 2 3 4 5 6 7 8 9
| /usr/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS mongodb://mongodb.service.consul:27017/admin?replicaSet=rs0 --shell <<EOF
db.isMaster()
EOF
yum -y install mongodb-org-shell-4.2.8-1.el7.x86_64.rpm
|
step6 在所有 secondary 上操作
1. 安装4.2
1 2 3
| yum -y install mongodb-org-shell-4.2.8-1.el7.x86_64.rpm mongodb-org-server-4.2.8-1.el7.x86_64.rpm
|
2. 确认版本为 4.2
1 2 3 4 5
| /usr/bin/mongo --version | head -n1
/usr/bin/mongod --version | head -n1
|
3. 启动4.2
1 2 3
| systemctl restart mongod.service
|
4. 观察进程状态,日志是否有异常
1 2 3 4 5
| systemctl status mongod.service
tail -f /var/log/mongodb/mongod.log
|
step7 在 primary 上操作
1. 下线 primary
1 2 3 4 5 6 7 8 9
| /usr/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS --port $MONGODB_PORT --authenticationDatabase admin --shell <<EOF
rs.stepDown()
rs.status()
EOF
|
2. 确认已下线
3. 安装 4.2
1 2 3
| yum -y install mongodb-org-shell-4.2.8-1.el7.x86_64.rpm mongodb-org-server-4.2.8-1.el7.x86_64.rpm
|
4. 确认版本为 4.2
1 2 3 4 5
| /usr/bin/mongo --version | head -n1
/usr/bin/mongod --version | head -n1
|
5. 启动4.2
1 2 3
| systemctl restart mongod.service
|
6. 观察进程状态,日志是否有异常
1 2 3 4 5
| systemctl status mongod.service
tail -f /var/log/mongodb/mongod.log
|
7. 开启 4.2 的功能
1 2 3 4 5 6 7 8 9
| /usr/bin/mongo -u $MONGODB_USER -p $MONGODB_PASS mongodb://mongodb.service.consul:27017/admin?replicaSet=rs0 --shell <<EOF
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
rs.status()
EOF
|