从 Apache cassandra 3.11.4 迁移到 4.0 beta 版本时出现问题

Posted

技术标签:

【中文标题】从 Apache cassandra 3.11.4 迁移到 4.0 beta 版本时出现问题【英文标题】:Issue while migrating from Apache cassandra 3.11.4 to 4.0 beta version 【发布时间】:2020-11-21 11:44:31 【问题描述】:

我在开发系统中将 cassandra 从 3.11.4 迁移到 4.0 测试版时遇到问题。

ERROR [main] 2020-07-31 15:34:36,099 CassandraDaemon.java:800 - Exception encountered during startup
java.lang.IllegalArgumentException: Compact Tables are not allowed in Cassandra starting with 4.0 version. Use `ALTER ... DROP COMPACT STORAGE` command supplied in 3.x/3.11 Cassandra in order to migrate off Compact Storage.
        at org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:919)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:878)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:869)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:857)
        at org.apache.cassandra.schema.Schema.loadFromDisk(Schema.java:102)
        at org.apache.cassandra.schema.Schema.loadFromDisk(Schema.java:91)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:241)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:661)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:778)

错误说要删除 COMPACT STORAGE ,但在我的数据库中没有启用 COMPACT STORAGE 的表。 请提出任何解决方案!

【问题讨论】:

【参考方案1】:

正如例外情况所暗示的,您有一个或多个表仍在使用已弃用的 Thrift 存储格式,即使您对此一无所知。

试试这个(粗略而简单的)命令:

$ cqlsh <node_ip> -e "DESCRIBE FULL SCHEMA" | egrep "CREATE TABLE|COMPACT STORAGE"

这将列出集群中的所有表,并指出它们中是否仍有紧凑存储支持。如果您启用了身份验证,则需要相应地对其进行修改以包含数据库凭据。干杯!

【讨论】:

谢谢@flightc!我错过了一些桌子。现在它正在工作

以上是关于从 Apache cassandra 3.11.4 迁移到 4.0 beta 版本时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Apache Cassandra - 从其他机器连接

Apache Cassandra 时区问题

使用 Apache Sqoop 将数据从 Mongo/Cassandra 导出到 HDFS

是否可以从 Apache Cassandra 宽行中选择性地读取

Apache Beam - 将 BigQuery TableRow 写入 Cassandra

Oracle 到 Apache Cassandra 数据迁移