如何获取C*集群的复制因子?

How to get the replication factor of C* cluster?

我在 cassandra.yaml 中找不到它,也许 nodetool 可以为我提供集群配置的复制因子?

复制因子的默认值是多少?

集群没有复制因子,但是您的 keyspaces does.

如果您想查看给定键空间的复制因子,只需执行SELECT * FROM system_schema.keyspaces;,它将打印您需要的所有复制信息。

考虑使用 DESCRIBE SCHEMA - 使用 system.schema_keyspaces 可能无法在未来的版本中使用(例如 3.0+,架构移至 system_schema);

在版本 3.0 + Cassandra 中,您可以从 system_schema.keyspaces replication 列中的 system_schema 键空间获取 RF 详细信息。

cassandra@cqlsh:system_schema> SELECT * FROM system_schema.keyspaces;

 keyspace_name      | durable_writes | replication
--------------------+----------------+-------------------------------------------------------------------------------------
        system_auth |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
      system_schema |           True |                             {'class': 'org.apache.cassandra.locator.LocalStrategy'}
 system_distributed |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
            company |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}
             system |           True |                             {'class': 'org.apache.cassandra.locator.LocalStrategy'}
             jerry  |           True |                   {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
      system_traces |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}

复制因子定义在键空间级别

为了查看特定键空间的复制因子,请在 cqlsh 中使用以下查询:

desc KEYSPACE Keyspace_Name;

您将获得输出,其中您可以看到上述键空间的复制因子:

Cassandra 3.11及以上版本:

  • 转到 Cassandra 节点上的路径:cd /usr/local/cassandra/apache-cassandra-3.11.0/bin
  • 输入命令:./cqlsh(你的Cassandra节点IP)
  • 然后输入:SELECT * FROM system_schema.keyspaces;

输出:您将获得 Cassandra 中所有相应键空间的复制因子

如果您不想使用 cqlsh 并且只想从 终端 打印信息,请使用 nodetool 和名为 describe cluster,像这样:

[user@user ~]$ nodetool describecluster

它将打印非常有用和简短的信息,包括关于键空间的信息,如下所示:

Keyspaces:
    system_schema -> Replication class: LocalStrategy {}
    system -> Replication class: LocalStrategy {}
    system_distributed -> Replication class: SimpleStrategy {replication_factor=3}
    system_traces -> Replication class: SimpleStrategy {replication_factor=2}
    system_auth -> Replication class: NetworkTopologyStrategy {dc1=3}

如果您正在寻找一个特定的键空间复制信息,只需使用以下命令(在本例中,我们将询问system_auth键空间信息) :

[user@user ~]$ nodetool describecluster | grep system_auth

..它将打印如下信息:

system_auth -> Replication class: NetworkTopologyStrategy {dc1=3}