我正在使用apache-cassandra-3.10
我明白,唯一能优雅地阻止卡桑德拉的方法不是 -9 pid,而是nodetool 。
但是,我想知道nodetool 是否也会在关机前将memtables中的数据刷新到sstables。
如果它不刷新,那么当我使用nodetool停止节点时,它将导致数据丢失。
在对此进行研究之后,我还读到了关于DURABLE_WRITES.的文章。耐久书写实际上是做什么的?
另外,datastax文档在设置DURABLE_WRITES一节中声明“不要使用SimpleStrategy在键空间上设置此属性”。
参考资料:r.html
如果我的密钥空间配置了简单的策略,那么我仍然不能使用DURABLE_WRITES来帮助它在关闭时丢失数据。
在关机前手动运行nodetool刷新是否是确保关闭时不丢失数据的唯一方法?
我从https://issues.apache.org/jira/browse/CASSANDRA-3564上读到,关闭时要刷新的功能还没有添加。
此外,还有一张关于同一问题的公开票,https://issues.apache.org/jira/browse/CASSANDRA-12001
目的是避免在关闭时使用nodetool丢失任何数据。基本上在关闭前刷新所有表,考虑使用中的简单策略。
发布于 2017-03-22 05:35:39
nodetool drain就够了。
从有关nodeool drain的Datastax文档中,
将所有备忘录从节点刷新到磁盘上的SSTables。Cassandra停止监听来自客户端和其他节点的连接。你需要重新启动卡桑德拉后,运行节点工具排水。 链接:螺杆式排水
然后,您可以杀死或运行nodetool stopdaemon。
发布于 2017-03-21 13:02:27
卡桑德拉是非常健壮和崩溃安全。即使您杀死/停止守护进程,您也可能不会丢失数据。但是,如果您安全关闭,那么您可以节省启动时间的卡桑德拉。
按照以下步骤安全关闭:
禁用流言会停止与其他节点的通信,禁用节俭,而二进制则会停止与客户端的通信。
最后排水沟冲了所有的桌子。
现在,通过杀死或停止守护进程来停止Cassandra
https://stackoverflow.com/questions/42926285
复制相似问题