同一 DC 上的两个密钥空间

Two Keyspace on Same DC

我已经在 DC 上创建了一个密钥空间。

为 tradebees_dev 键空间创建查询:-(这个键空间工作正常。)

CREATE KEYSPACE tradebees_dev WITH replication = {'class': 'NetworkTopologyStrategy', 'solr': '3'}  AND durable_writes = true;

状态如下:-

nodetool status tradebees_dev

Datacenter: Solr
================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  1.09 GB    256     100.0%            e754d239-8370-4e1d-82c8-dce3d401f972  rack1
UN  127.0.0.2  1.19 GB    256     100.0%            70b74025-1881-4756-a0c8-a1ec5e57d407  rack1
UN  127.0.0.3  1.53 GB    256     100.0%            3ba4bfe4-c894-4cd1-a684-f0f20edac78f  rack1

之后,我在同一个 DC 上创建了另一个具有相同复制因子的密钥空间。

为 crawl_dev 键空间创建查询:-

CREATE KEYSPACE crawl_dev WITH replication = {'class': 'NetworkTopologyStrategy', 'solr': '3'}  AND durable_writes = true;

nodetool status crawl_dev

Datacenter: Solr
================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  1.09 GB    256     0.0%              e754d239-8370-4e1d-82c8-dce3d401f972  rack1
UN  127.0.0.2  1.19 GB    256     0.0%              70b74025-1881-4756-a0c8-a1ec5e57d407  rack1
UN  127.0.0.3  1.53 GB    256     0.0%              3ba4bfe4-c894-4cd1-a684-f0f20edac78f  rack1

由于第一个键空间工作正常但是当我尝试对第二个键空间进行 select 查询时,即 crawl_dev ,我收到以下错误消息。

Traceback (most recent call last):
  File "/usr/share/dse/resources/cassandra/bin/cqlsh", line 1124, in perform_simple_statement
    rows = self.session.execute(statement, trace=self.tracing_enabled)
  File "/usr/share/dse/resources/cassandra/bin/../lib/cassandra-driver-internal-only-2.7.2-5d33cb4.zip/cassandra-driver-2.7.2-5d33cb4/cassandra/cluster.py", line 1602, in execute
    result = future.result()
  File "/usr/share/dse/resources/cassandra/bin/../lib/cassandra-driver-internal-only-2.7.2-5d33cb4.zip/cassandra-driver-2.7.2-5d33cb4/cassandra/cluster.py", line 3347, in result
    raise self._final_exception
Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'}

请建议我如何解决此问题。并让我知道我们能否在同一个 DC 上创建两个键空间。是或否。

经过一些研究,我得到了信息然后我检查了

/etc/dse/cassandra/cassandra-rackdc.properties

在此文件中,给出了 dc=DC1 和 rc=RACK1。 谢谢。

我不明白为什么不能在同一 DC 上创建多个键空间。实际上,您在集群中已经有多个键空间:

cqlsh> DESCRIBE keyspaces;

system_traces  system_schema  system_auth  system  system_distributed

"create keyspace" 命令中的数据中心名称区分大小写,因此代替:

CREATE KEYSPACE tradebees_dev WITH replication = {'class': 'NetworkTopologyStrategy', 'solr': '3'}  AND durable_writes = true;

你要大写Solr,例如:

CREATE KEYSPACE tradebees_dev WITH replication = {'class': 'NetworkTopologyStrategy', 'Solr': '3'}  AND durable_writes = true;

您使用 "nodetool status [keyspace]" 命令进行故障排除的方向正确。请注意,在 tradebees_dev 的结果中,每个节点在 Owns 列中报告 100%,这是有道理的,因为您在 3 节点集群上有 RF 3。然后注意 crawl_dev 它显示 0% 这意味着 没有 节点拥有该数据,因此您收到的错误。在上面的示例中,我怀疑您确实在复制工厂中使用资本 "Solr" 创建了 tradebees_dev,这就是它起作用的原因。