我们有2个DC,它们通过不稳定的VPN连接,每3小时就会失去一次连接。
所有数据都写入DC A,然后复制到DCB。在此“连接丢失”事件之一发生之后,DC B上数据丢失(受影响的中断窗口)。
我的假设是,DC B将在重新建立连接后恢复复制并获取所有丢失的数据。这个假设错了吗?
Cassandra具有以下复制数据的方法:
hinted_handoff_enabled
设置为true时,当节点重新联机时将重播突变,但这仅在max_hint_window_in_ms
定义的窗口内发生(默认为3小时),但这也可能受到每个表的影响gc_grace_seconds设置(请参见this blog post for details)。但是可以在每个DC的基础上禁用提示的使用(通过hinted_handoff_disabled_datacenters
)。另外,由于hinted_handoff_throttle_in_kb
和max_hints_delivery_threads
参数限制了提示,因此不会立即重播它们。如果启用了提示,但您仍然错过数据-检查提示是否已重播,或者它们仍在重播-there are metrics,它显示磁盘上有多少个提示,等等。