有没有一种命令或任何方法可以知道Cassandra上存储的数据存储在哪些节点上?
我对Cassandra还不是很熟悉,尝试过谷歌搜索这个问题但没有得到很好的解答。
谢谢!
我对Cassandra还不是很熟悉,尝试过谷歌搜索这个问题但没有得到很好的解答。
谢谢!
$ nodetool getendpoints mykeyspace tbl '8546200'
192.168.73.188
192.168.73.190
我不知道你是否正在寻找这样的内容。据我所知,没有一种方法可以直接查询表或键空间中所有行的负责节点。但正如Blake指出的那样,你的应用程序并不需要担心这个问题。
如果你真的想找出来,你可以使用分区键上的token
函数查询你的表。这里有一个使用Blake架构的例子:
SELECT token(partition_key),partition_key FROM tbl;
这将列出具有分区键的哈希令牌。然后,您可以运行nodetool ring
以列出每个节点的令牌范围,并查看哪些节点负责该范围。请注意,如果您使用vNodes,则输出将非常大(默认情况下每个节点有256行)。
CREATE TABLE tbl (
partition_key INT,
clus_key TEXT,
...,
PRIMARY KEY((partition_key), clus_key);
> TRACING ON;
> SELECT * FROM table;
> Tracing session: 1f6b4440-050f-11e5-ba41-672ef88f159d
> ....
> <Details about the query>
> ....