如何在cassandra中修改memtable刷新时间间隔



我已经在cassandra.yaml文件中启用了增量备份。正如我所知,当我们启用增量备份时,cassandra将只在刷新memtable时备份数据(在backups目录中)。但是,如果内存表还没有刷新呢?我将无法获得增量备份,对吗?。我知道要刷新内存表,需要满足某些条件,例如时间间隔或内存表空间。我的问题是,我该如何修改它,以便即使在最后一个快照之后输入一条记录,我仍然可以将整个数据与最新的条目一起备份?考虑这个例子

  1. 拍摄快照
  2. 清除增量备份(备份目录)
  3. 在表中输入一条记录
  4. 检查backups目录中的增量备份。它仍然是空的

现在如何备份在最后一个快照之后写入的记录?一般来说,除非我们拍摄快照,否则我们如何备份整个最新数据?

您可以在进行备份之前使用nodetool flush手动刷新文件。这样,您将始终刷新最新的memtable。

nodetool文档

如果您想在不拍摄快照的情况下备份集群,只需将每个节点的所有内容保存在/data文件夹下即可(主要包括.db文件、统计文件等)。

为了不覆盖文件,您还应该将其与令牌信息一起存储。

当您希望从此备份中恢复时,您应该启动具有相同节点数的群集,并简单地将数据从每个备份的节点一对一地复制到已恢复的节点。请注意,您必须修改cassandra.yaml,以便在每个恢复的节点的cassandra.saml中包含相关令牌(以及对等方/seeds等)。

复制完所有数据后,您可以在所有节点上启动C*进程。

最新更新