emqx开源版本5.4.0节点重启失败

使用RPM包安装的emqx 5.4.0版本集群,其中一个节点做了重启的操作,但是节点停止后无法启动,报错信息如下:

2024-03-21T23:55:34.602835+08:00 [critical] msg: 
conflicting_routing_schemas_detected_in_cluster, mfa: 
emqx_router:choose_schema_vsn/1(598), configured: v2, reason: There are 
records in the routing tables related to both v1 and v2 storage schemas. This 
probably means that some nodes in the cluster use v1 schema and some use v2, 
independently of each other. The routing is likely broken. Manual intervention and 
full cluster restart is required. This node will shut down.

请问是什么原因导致的,该如何解决呢?

应该是节点中存在不同版本的 emqx 导致的,emqx_trie 表需要整个集群工作在同样的版本。你可能需要重启整个集群。

集群内部版本都是一样的,没有其他版本,但是无法启动

重启整个集群需要如何操作呢?是否是先停止所有节点,然后一台一台启动?

那应该不是我说的问题导致的,你这个节点重启失败是不是没有影响业务?

能让我上去看看吗?微信 18253232330.

请问你的 5.4.0 是通过滚动升级上来的吗?

我们这是内部的机器,可能不方便登录,升级是一开始用的5.3.2版本rpm包安装的,升级步骤是停掉实例,然后安装5.4.0的rpm安装包进行升级后,在启动的,刚升级的时候是没问题的

集群内部有一台节点是后来加入的,直接使用5.4.0版本部署的,其他的节点是从5.3.2升级上来的,是不是跟这个有关系?

哦 那就是因为是从 5.3 升级上来,跟 5.4.0 直接装的那个节点冲突了。如果可以的话,你挨个关掉节点然后再挨个重启吧。

这个问题应该是一个竞争导致的。

5.4 默认开启了新的路由存储方式 v2。
如果 5.4 节点加入集群后,路由表是空的,那它就会初始化成 v2,但是 5.3 节点还在运行 v1。
这时候如果有连接进来,节点会各自按照自己的方式来继续存路由,直到重启的时候才发现数据库出现不一致了。

这个问题我们会尽快修复。
暂时的解决办法是把所有节点都停掉 C B A 这个顺序。
然后再启动节点 A B C 这个顺序。

因为所有的节点都已经升级到了 5.4, 所以启动之后都会使用 v2 格式,路由格式就一致了。

感谢大佬的解答,明白原因了