我有6个Cassandra实例在同一数据中心内的GCP中运行。但是,由于某些有线问题,我无法连接到任何这些主机(应用程序仍可以通过Java / Python驱动程序连接到它)。似乎ssh问题无法修复。
因此,为了重新获得对实例的控制权,我正在考虑启动一个新的Cassandra实例,并让该新实例加入集群。
由于它将触发数据重新分配,因此我想先备份所有数据,以防万一发生任何不良情况。我完成它的方法是使用python驱动程序查询键空间中的所有数据。但是,对于一个键空间,无论我使用哪种一致性级别,它都会不断为我的SELECT
查询提供一致性错误,如下所示-
cassandra.Unavailable: Error from server: code=1000 [Unavailable exception] message="Cannot achieve consistency level LOCAL_ONE" info={'consistency': 'LOCAL_ONE', 'required_replicas': 1, 'alive_replicas': 0}
cassandra.Unavailable: Error from server: code=1000 [Unavailable exception] message="Cannot achieve consistency level LOCAL_QUORUM" info={'consistency': 'LOCAL_QUORUM', 'required_replicas': 2, 'alive_replicas': 1}
经过一些调查,我发现它可能与我的system_auth
键空间有关,这意味着我需要将复制因子更改为3或5。但是,根据official doc,它需要重启无法通过python驱动程序实现。
因此,我想知道
system_auth
键空间的复制因子有什么风险?注意
出现问题的键空间如下所示-
('durable_writes', True), ('replication', OrderedMapSerializedKey([('class', 'org.apache.cassandra.locator.NetworkTopologyStrategy'), ('dc1', '2')]))
system_auth
键空间如下所示-
('durable_writes', True), ('replication', OrderedMapSerializedKey([('class', 'org.apache.cassandra.locator.SimpleStrategy'), ('replication_factor', '1')]))
Python驱动程序版本
cassandra-driver==3.9.0
Cassandra版本
[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
答案 0 :(得分:0)
您可以更改任何键空间RF,而无需重新启动cassandra。无论您发现什么文档,要么被误解,要么是伪造的(至少对于该部分而言)。您需要在“新”节点(以及有权访问的其他节点)上进行修复,以便将数据推送至它们-否则,您仍在同一条船上(新记录将遵循新的RF,但是需要对现有数据进行“修复”-随时间推移或立即使用nodetool repair命令进行修复,以便分发数据。)