我对潜在情况有疑问,想知道我们的假设是否正确。 (使用带有DSE 5.x的cassandra 3.x)
我们从docs了解到,为了向集群添加新的(和新的)数据中心,我们需要像这样暂时设置ReplicationFactor:
$criteria2 = Criteria::create()->where(Criteria::expr()->gte('size', 4))->andWhere(Criteria::expr()->eq('type', 'du'));
$data2 = $this->getSubject()->getData()->matching($criteria2);
$formMapper->add('data', 'sonata_type_collection', ['data' => $data2] ...
DC1是当前运行的数据中心,DC2是我们要添加的数据中心。 此测试帮助我们了解了从现有的现场响铃到全新的数据流的影响。
现在我们假设的情况是,能够开始复制最初只复制到一个DC的密钥空间,现在保存到其他当前正在运行的DC。
创建密钥空间时:
{'class' : 'NetworkTopologyStrategy', 'DC1' : 3, 'DC2' : 0 }
然后,当业务需求发生变化时:
CREATE KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 0};
将所有DC定义为0的应用程序中的所有新键空间定义是否更安全,以便可以在某个时刻修改该值。并且会改变复制因子是否足以触发将密钥空间流式传输到其他数据中心 - 或者我们是否还需要运行ALTER KEYSPACE Foo WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'US' : 2, 'EU' : 2};
?
答案 0 :(得分:2)
公认的做法是不要为您不希望特定键空间复制到的DC定义复制因子。如果你按照自己的方式行事,我认为不会发生任何不好的事情,但我觉得不定义它将是更安全的方式。
会改变复制因子是否足以触发将密钥空间流式传输到其他数据中心 - 或者我们是否还需要运行nodetool rebuild?
更改密钥空间上的复制因子将告知将来对该密钥空间的所有写入也将转到新数据中心。但是,要将现有数据复制到新数据中心,您 必须运行nodetool repair
或nodetool rebuild
。