前期准备:
1)3.2.12版本准备好
2)升级过程中,保证client不会修改集合元数据。例如:不能执行下列操作:
3)关闭balancer
4)备份config数据库
操作步骤:
1、关闭balancer
mongos> db.setBalancerState(false);
2、升级shards
3、升级config server
升级config server是有顺序的。如果启动mongos指定的config server顺序如下
//mongod_config.conf
sharding:
configDB: db-test01:20001,db-test02:20001,db-test03:20001
那么,升级的顺序为:db-test03 → db-test02 → db-test01
mongod --configsvr --port 20001 --dbpath /data/mongodb/config
sharding:
clusterRole: configsvr
net:
port: 20001
storage:
dbpath: /data/mongodb/config
依次重复启动其他configDB:db-test02、db-test01
4、升级mongos实例
关闭mongos时,程序会有报错。因为mongos关闭,当前连接会断掉,之后程序尝试连接关闭的mongos连不上会连接其他mongos(如有多个mongos节点且程序配置访问多个mongos),不影响业务。
5、开启balancer
mongos> db.setBalancerState(true);
升级过程中,使用脚本每秒向数据库写一条数据。观察数据写入情况
//报错信息
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 94,
"errmsg" : "Request contains sharding metadata, but the server has not been made sharding aware."
}
})
可能原因:stepDown未切换到其他节点,就将节点关闭了。