原文地址:http://openwares.net/database/alter_keyspace_replication_factor.html
keyspace创建以后,仍然可以更改其复制因子,也就是keyspace中数据的复制份数是可以动态修改的。
cassandra集群的系统keyspace system_auth默认的replication factor是1,也就是其实是没有冗余的。如果这唯一的节点挂掉,就无法再登录到集群了。
因此官方文档推荐将其复制因子设置为每个数据中心的每一个节点。也就是将其复制到集群中的每一个节点上。
查看system_auth的复制因子
cqlsh> DESC KEYSPACE system_auth
CREATE KEYSPACE system_auth WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
...
果然replication factor只有1,修改之:
cqlsh> ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1':2,'dc2':2};
durable_writes参数用于设置写数据时是否写入commit log,如果设置为false,则写请求不会写commit log,会有丢失数据的风险。
此参数默认为true,即要写commit log,生产系统应该将该参数设置为true。
References:
[1]CREATE KEYSPACE
===
大胆的假设,小心的求证;认真的做事,严肃的做人。 —— 胡适