Cassandra 不会在节点关闭和重新启动时执行 "late" 复制吗?
Doesn't Cassandra perform "late" replication when a node down and up again?
我有一个 2 节点 Cassandra 集群。复制因子为2,客户端只向节点1发送数据。如果2个节点都是运行,则数据从节点1复制到节点2。但是,如果我首先仅启动节点1,则客户端将数据发送到节点1,然后停止发送数据。之后我启动节点 2。我希望数据 "late"(或异步)从节点 1 复制到节点 2,但事实并非如此。我该如何配置它才有效?
我的 Cassandra 版本是 2.1.6。
每当一个节点在写入发生时关闭,这意味着它错过了存储数据,协调器将存储一个 'hint' 以便该节点一旦恢复在线就会接收数据。
虽然这个提示不会永远存在,但如果节点停机时间过长,它将被丢弃。您可以通过cassandra.yaml中的max_hint_window_in_ms配置这个时间。我相信这是默认的 3 小时。增加此超时可以解决您的问题。
否则在请求该行数据时,会通过读修复来解决冲突。如果你设置了足够的读取一致性级别,那么这将在结果返回给客户端之前解决。
http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_about_hh_c.html
首先你必须设置 max_hint_window_in_ms 。
其次,如果在插入时行键的令牌没有找到正确的 cassandra 节点,那么您必须设置两台机器的令牌号,然后它将转到另一个节点。如果你有两个节点集群,那么也将两个节点都作为种子节点。
我有一个 2 节点 Cassandra 集群。复制因子为2,客户端只向节点1发送数据。如果2个节点都是运行,则数据从节点1复制到节点2。但是,如果我首先仅启动节点1,则客户端将数据发送到节点1,然后停止发送数据。之后我启动节点 2。我希望数据 "late"(或异步)从节点 1 复制到节点 2,但事实并非如此。我该如何配置它才有效?
我的 Cassandra 版本是 2.1.6。
每当一个节点在写入发生时关闭,这意味着它错过了存储数据,协调器将存储一个 'hint' 以便该节点一旦恢复在线就会接收数据。
虽然这个提示不会永远存在,但如果节点停机时间过长,它将被丢弃。您可以通过cassandra.yaml中的max_hint_window_in_ms配置这个时间。我相信这是默认的 3 小时。增加此超时可以解决您的问题。
否则在请求该行数据时,会通过读修复来解决冲突。如果你设置了足够的读取一致性级别,那么这将在结果返回给客户端之前解决。
http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_about_hh_c.html
首先你必须设置 max_hint_window_in_ms 。 其次,如果在插入时行键的令牌没有找到正确的 cassandra 节点,那么您必须设置两台机器的令牌号,然后它将转到另一个节点。如果你有两个节点集群,那么也将两个节点都作为种子节点。