是否可以使用 dsbulk 备份和恢复 Cassandra 集群?
Is it possible to backup and restore Cassandra cluster using dsbulk?
我在网上搜索了很多,看到了很多备份和恢复Cassandra集群的方法,比如nodetool snapshot
和Medusa
。但我的问题是我可以使用 dsbulk
来备份 Cassandra 集群吗?它有什么局限性?为什么没有人建议这样做?
在某些情况下可以使用它,但它不实用,因为(这是主要的,列表可能更大):
- DSBulk 给集群节点增加了额外的负载,因为它正在通过标准 read path。与此相反,
nodetool snapshot
只是创建一个指向包含数据的文件的硬链接,没有对节点的额外负载
- 用 DSBulk 实现增量备份更难 - 你需要为 SELECT 提供条件,它只会找到自上次备份以来发生变化的数据,所以你需要有时间戳列,因为你可以' t 对
writetime
函数的值执行 WHERE 条件。另外,它无论如何都需要重新扫描整个数据。另外,不可能找到删除了哪些数据。使用 nodetool snapshot
,您只需比较自上次备份以来更改了哪些文件,然后只备份它们。
我在网上搜索了很多,看到了很多备份和恢复Cassandra集群的方法,比如nodetool snapshot
和Medusa
。但我的问题是我可以使用 dsbulk
来备份 Cassandra 集群吗?它有什么局限性?为什么没有人建议这样做?
在某些情况下可以使用它,但它不实用,因为(这是主要的,列表可能更大):
- DSBulk 给集群节点增加了额外的负载,因为它正在通过标准 read path。与此相反,
nodetool snapshot
只是创建一个指向包含数据的文件的硬链接,没有对节点的额外负载 - 用 DSBulk 实现增量备份更难 - 你需要为 SELECT 提供条件,它只会找到自上次备份以来发生变化的数据,所以你需要有时间戳列,因为你可以' t 对
writetime
函数的值执行 WHERE 条件。另外,它无论如何都需要重新扫描整个数据。另外,不可能找到删除了哪些数据。使用nodetool snapshot
,您只需比较自上次备份以来更改了哪些文件,然后只备份它们。