3.0.2→3.2.12 Sharded Cluster升級(mmapv1引擎不換)

前期準備:

    1)3.2.12版本準備好

    2)升級過程中,保證client不會修改集合元數據。例如:不能執行下列操作:

    3)關閉balancer

    4)備份config數據庫 



操作步驟:

1、關閉balancer   

mongos> db.setBalancerState(false);


2、升級shards

  • 升級其中一個Secondary成員

    • 關閉mongod實例,3.0命令替換成3.2

    • 重啓該成員。等待該成員集羣中的狀態爲SECONDARY後,再升級第二個Secondary

  • Step Down主節點。

  • 當rs.status()顯示主節點已經是分片的其他成員,開始升級stepped-down的主節點(此時,只是role是Secondary)

    • 關閉mongod實例,3.0命令替換成3.2

    • 重啓


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

  • 關閉db-test03 config server,並且3.0命令替換成3.2

  • 啓動3.2版本的config server,指定configsvr和port

    • 使用命令行啓動

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實例

  • 無序的。替換3.2版本的mongos,重啓(一個一個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未切換到其他節點,就將節點關閉了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章