我们在 RedHat 上安装了三个节点的 Cassandra 集群。以前,集群可以毫无问题地停止和启动。重新启动集群后,Cassandra 不再启动。出现以下错误
ERROR [main] 2025-02-25 11:25:58,771 CassandraDaemon.java:708 - Exception encountered during startup
java.lang.IllegalArgumentException: e9311530-b596-11e8-b635-dd45db3e561g is already bound in reverseMap to (demo,airports)
at org.apache.cassandra.utils.ConcurrentBiMap.put(ConcurrentBiMap.java:97) ~[apache-cassandra-3.11.2.jar:3.11.2]
这个问题该如何解决?
https://issues.apache.org/jira/browse/CASSANDRA-15166中有一个较早的讨论,但没有提出解决方案。
您没有提供太多信息,但我怀疑其中一个(或多个)表的架构有问题。完整的错误消息加上完整的堆栈跟踪可以证实我的怀疑。
无论如何,消息告诉我至少有一个表具有重复的架构条目。错误表明表 ID 已与该表关联,
demo.airports
但它在架构中遇到了另一个具有相同e9311530-b596-11e8-b635-dd45db3e561g
ID 的表。值得一提的是,该表 ID 是一个时间 UUID,其中嵌入了时间戳,表明该表是在 2018 年 9 月 11 日 07:47:19 GMT 创建的。
发生了一些事情,导致架构中出现重复条目。例如,如果您尝试恢复
schema_*/
文件夹中的表,则可能出现问题,导致架构损坏。为了记录在案,我只是大声思考,而不是指责。🙂无论如何,一个可能的解决方法是在节点上重新创建架构,然后手动将 SSTables 复制到新文件夹中以恢复数据,就像您从快照中恢复它们一样,就像我在本文中记录的那样。干杯!