2.1.14 中的 Cassandra 模式问题
Cassandra schema issue in 2.1.14
我们在更改 table 时遇到了一个奇怪的问题。我们使用 Cassandra python 驱动程序 sync_table() 方法从我们的模型(在 py 文件中定义)同步到 Cassandra。集群是一个 20 个节点,压力适中(所有节点的最大使用率在 50-70% 范围内)。
当使用 Cassandra python 驱动程序同步模式时,它在内部执行 "ALTER TABLE ADD " 命令。在一个特定的 table 中,当我们添加七个新列时,我们注意到了这种奇怪的行为
DESCRIBE TABLE 命令显示新创建的 7 列中的 3 或 4 列。有一次,它在 DESCRIBE TABLE 输出中显示了所有 7 列。
- 但在 select * 输出中,未显示新列。
行为不一致。我们手动删除了列,然后重新同步了架构。每次问题出现时 select 命令不显示 7 列中的少数列。
有任何调试此问题的指示吗?是由于 Cassandra 节点的压力吗?
最有可能的问题是您遇到了架构协议问题,因为执行了许多架构更改命令。
通常,您只需将模式更改命令发送到一台主机,并获得关于模式协议的确认。第一件事通常是通过创建一个使用白名单策略的会话来完成的,其中列表只包含一个节点(与令牌感知或循环策略相反)。第二件事很简单 - 您可以检查执行命令后返回的结果集的相应标志,或者检查集群元数据的相应 field/method。
我们在更改 table 时遇到了一个奇怪的问题。我们使用 Cassandra python 驱动程序 sync_table() 方法从我们的模型(在 py 文件中定义)同步到 Cassandra。集群是一个 20 个节点,压力适中(所有节点的最大使用率在 50-70% 范围内)。
当使用 Cassandra python 驱动程序同步模式时,它在内部执行 "ALTER TABLE ADD " 命令。在一个特定的 table 中,当我们添加七个新列时,我们注意到了这种奇怪的行为
DESCRIBE TABLE 命令显示新创建的 7 列中的 3 或 4 列。有一次,它在 DESCRIBE TABLE 输出中显示了所有 7 列。
- 但在 select * 输出中,未显示新列。
行为不一致。我们手动删除了列,然后重新同步了架构。每次问题出现时 select 命令不显示 7 列中的少数列。
有任何调试此问题的指示吗?是由于 Cassandra 节点的压力吗?
最有可能的问题是您遇到了架构协议问题,因为执行了许多架构更改命令。
通常,您只需将模式更改命令发送到一台主机,并获得关于模式协议的确认。第一件事通常是通过创建一个使用白名单策略的会话来完成的,其中列表只包含一个节点(与令牌感知或循环策略相反)。第二件事很简单 - 您可以检查执行命令后返回的结果集的相应标志,或者检查集群元数据的相应 field/method。