TheR1sing3un commented on PR #6100: URL: https://github.com/apache/rocketmq/pull/6100#issuecomment-1456378551
## 升级方案 5.0以下版本升级则遵守之前的升级步骤。 5.0以上版本升级需要遵守以下步骤。 ### 升级controller 由于我们在controller里面更改了许多状态机的内部属性以及新版的brokerId分配的逻辑,因此controller需要进行升级。 1. 将旧版本Controller下线。 2. 清除Controller数据,也就是DLedger的数据文件,默认路径在`~/DLedgerController` 3. 上线新版本Controller。 ### 升级Broker 1. 将Broker从节点停机。 2. 将Broker主节点停机。 3. 将所有Broker的Epoch文件删除,即默认`~/store/epochFileCheckpoint`和`~/store/epochFileCheckpoint.bak`。 4. 将原来的主Broker先上线,等待该Broker成功当选为master。(可用admin命令`getSyncState`来检测) 5. 将原来的从Broker全部上线。 ### 测试 > 启动一个namesrv ```bash nohup sh bin/mqnamesrv & ``` > 启动一个旧版controller ```bash nohup sh bin/mqcontroller -c ./conf/controller/controller-standalone.conf & ``` > 查看controller是否被正确启动 ```bash sh bin/mqadmin getControllerMetaData -a localhost:9878 ```  > 先后启动旧版broker0和broker1 ```bash nohup sh bin/mqbroker -c conf/controller/quick-start/broker-n0.conf & ``` ```bash nohup sh bin/mqbroker -c conf/controller/quick-start/broker-n1.conf & ``` > 查看集群情况 ```bash sh bin/mqadmin getSyncStateSet -a localhost:9878 -b broker-a ```  > 发送消息 ```bash sh bin/mqadmin sendMessage -p "hello" -n localhost:9876 -b broker-a -t default ```  > 检查两个节点是否正确append ```bash sh bin/mqadmin getBrokerEpoch -n localhost:9876 -b broker-a ```  > controller下线 将controller进程杀死。 测试此时是否可以正常收发消息。  > 清除controller数据文件  > 上线新版controller  > 检查当前是否正常收发消息  > 分别将broker的从节点和主节点先后停机  > 清除每个broker的epoch文件  > 将原来的主broker先更新上线  > 从broker更新上线  > 测试收发消息  > 上线一个新节点broker2  > 下线broker0,触发切主  broker1成为master > 下线broker1,触发切主  > 测试消息收发  > 重启broker0和broker1 <img width="806" alt="image" src="https://user-images.githubusercontent.com/87409330/223159422-142bc372-be99-4440-95ba-9bf222bffd6c.png"> ### 兼容性 | | 5.0旧Controller | 新Controller | | --- | --- | --- | | 5.0旧Broker | 正常运行,可切换 | 若已主备确定则可正常运行,不可切换。若broker重新启动则无法上线 | | 新Broker | 无法正常上线 | 正常运行,可切换 | -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
