table id什么时候变
When does table id changes
table记录在system_schema.tables中的id和数据目录什么时候改变,Cassandra如何读取目录以获取最新的模式
查看数据目录 cd $CASSANDRA_DATA/keyspace/ 我看到两个目录
drwxr-xr-x 4 个 cassandra 用户 4096 6 月 27 日 20:47 deviceData-c31406e0eda011e88cce75b7a7f02232
drwxr-xr-x 3 个 cassandra 用户 4096 6 月 30 日 15:22 deviceData-a0ba3490f28511e88cce75b7a7f02232
查询 table 架构时,我看到
select keyspace_name, table_name, id from system_schema.tables where keyspace_name='devices' ;
keyspace_name | table_name | id
------------------------------------------------------------------------------
devices | deviceData | a0ba3490f28511e88cce75b7a7f02232
所以我的问题是:是什么导致 id 改变(是 alter 语句)以及 C* 如何决定使用哪个结构。
A table 在其整个生命周期中只有一个 UUID(和一个 tablename-UUID 目录)。当 table creating 语句被执行时,UUID 被分配到协调器节点上。这些目录是在副本处理模式更改通知时在副本上创建的。
删除 table 并使用相同名称重新创建后,您可以获得不同的 tablename-UUID 目录。一次只有一个具有给定名称的 table 处于活动状态。
如果您尝试在两个不同的节点上同时创建具有给定名称的 table,您也可能会得到两个目录。不过你不应该尝试这样做 (https://github.com/scylladb/scylla/issues/420)
应该只有一个,但如果您删除 table 并重新创建它,将会有第二个 table id。
如果您在不同的节点上同时调用 CREATE TABLE
,他们可能会使用一个 table id 创建它,然后与集群模式的其余部分融合并切换到新 table ID。如果您在日志中看到任何 cfid 不匹配错误,弹跳集群将解决此问题。有计划在未来的版本中解决这个问题,但 3.x 仍然卡在这个地方。
table记录在system_schema.tables中的id和数据目录什么时候改变,Cassandra如何读取目录以获取最新的模式
查看数据目录 cd $CASSANDRA_DATA/keyspace/ 我看到两个目录
drwxr-xr-x 4 个 cassandra 用户 4096 6 月 27 日 20:47 deviceData-c31406e0eda011e88cce75b7a7f02232
drwxr-xr-x 3 个 cassandra 用户 4096 6 月 30 日 15:22 deviceData-a0ba3490f28511e88cce75b7a7f02232
查询 table 架构时,我看到
select keyspace_name, table_name, id from system_schema.tables where keyspace_name='devices' ;
keyspace_name | table_name | id
------------------------------------------------------------------------------
devices | deviceData | a0ba3490f28511e88cce75b7a7f02232
所以我的问题是:是什么导致 id 改变(是 alter 语句)以及 C* 如何决定使用哪个结构。
A table 在其整个生命周期中只有一个 UUID(和一个 tablename-UUID 目录)。当 table creating 语句被执行时,UUID 被分配到协调器节点上。这些目录是在副本处理模式更改通知时在副本上创建的。
删除 table 并使用相同名称重新创建后,您可以获得不同的 tablename-UUID 目录。一次只有一个具有给定名称的 table 处于活动状态。
如果您尝试在两个不同的节点上同时创建具有给定名称的 table,您也可能会得到两个目录。不过你不应该尝试这样做 (https://github.com/scylladb/scylla/issues/420)
应该只有一个,但如果您删除 table 并重新创建它,将会有第二个 table id。
如果您在不同的节点上同时调用 CREATE TABLE
,他们可能会使用一个 table id 创建它,然后与集群模式的其余部分融合并切换到新 table ID。如果您在日志中看到任何 cfid 不匹配错误,弹跳集群将解决此问题。有计划在未来的版本中解决这个问题,但 3.x 仍然卡在这个地方。