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告密者也"机架知道,"所以当进行写操作时,将确保该数据的一个副本是一个节点上RACK1的DC1,而另一份是每个RACK中DC2.根据您的意思,拥有三个逻辑数据中心可能是有意义的,每个数据中心都有一个机架.
您还应该在"选择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下面定义了三个机架,则会将一个副本复制到所有三个机架.