在cassandra中复制

Roc*_*ock 4 cassandra datastax-enterprise datastax cassandra-2.0

复制如何在Cassandra中运行?如果我有3个机架和3个RF NetworkTopologyStratagy然后将数据复制到所有3个机架?

数据在整个群集中的复制方式究竟如何?我问,因为我们正在设计我们的集群以满足3个机架中有2个机架出现故障的最坏情况,我们不想丢失数据.

我们只有一个带3个机架的数据中心.

如果我使用:

CREATE KEYSPACE "myKeyspaceName"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3  }
Run Code Online (Sandbox Code Playgroud)

这会复制到所有三个机架吗?

Aar*_*ron 10

在Cassandra 1.0文档中,他们有一篇文章可以很好地解释这一点:关于Cassandra中的复制.

我假设你有两个(逻辑?)数据中心.假设您在一个DC中有两个机架,在另一个DC中有最后一个机架,并且在每个RACK上有两个节点.您将在拓扑文件中定义这些内容,如下所示:

server1IP=DC1:RACK1
server2IP=DC1:RACK1
server3IP=DC2:RACK1
server4IP=DC2:RACK1
server5IP=DC2:RACK2
server6IP=DC2:RACK2
Run Code Online (Sandbox Code Playgroud)

如果您想要有3个数据副本(每个逻辑机架一个),那么您将定义您的密钥空间以使用NetworkTopologyStrategy,并为每个DC设置复制设置,如下所示:

CREATE KEYSPACE "myKeyspaceName"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 2};
Run Code Online (Sandbox Code Playgroud)

该PropertyFile告密者也"机架知道,"所以当进行写操作时,将确保该数据的一个副本是一个节点上RACK1DC1,而另一份是每个RACKDC2.根据您的意思,拥有三个逻辑数据中心可能是有意义的,每个数据中心都有一个机架.

您还应该在"选择Keyspace复制选项"部分中查看此文档,该部分进一步说明了如何配置复制.

编辑:

如果我使用CREATE KEYSPACE"myKeyspaceName"WITH REPLICATION = {'class':'NetworkTopologyStrategy',replicationfactor:3}.这会复制到所有三个机架吗?

我不确定.但是我发现的每个例子都是使用只有一个DC的NetworkTopologyStrategy来定义密钥空间的复制策略,特别是命名DC而不是声明"复制因子".即使我链接的文件说明:

NetworkTopologyStrategy将每个数据中心所需的副本数量作为选项.即使对于单个数据中心(或单节点)群集,您也可以使用此副本放置策略,并仅定义一个数据中心的副本数.

因此,假设您为DC命名DC1,它将如下所示:

CREATE KEYSPACE "myKeyspaceName"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3}
Run Code Online (Sandbox Code Playgroud)

如果您这样做,并且在该DC下面定义了三个机架,则会将一个副本复制到所有三个机架.