使用nodetool和cqlsh copy命令备份数据有什么区别?

agyaoht7  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(457)

目前,我们有两个选项可以将数据备份到cassandra键空间中的表中。我们可以选择任何一个用户 nodetool 命令或使用 copy 来自 cqlsh 终端。
1) 这些命令之间有什么区别?
2) 哪一个最合适?
3) 如果我们使用 nodetool 为了进行备份,我们通常会在发出 nodetool snapshot command . 所以我的问题是,如果我们使用 cqlsh copy 命令?
感谢您的帮助。
非常感谢。

8gsdolmq

8gsdolmq1#

nodetool snapshot对于任何数量的数据都是很好的方法,它可以在几秒钟内创建硬链接。copy命令将花费大量时间,因为这取决于数据和集群的大小。对于较少的数据和测试,可以使用copy命令,但对于生产节点,建议使用tool snapshot。

yk9xbfzb

yk9xbfzb2#

好问题!
1) 这些命令之间有什么区别?
运行 nodetool snapshot 在请求的键空间上创建到sstable文件的硬链接。这与从(linux)命令行运行此命令相同:

ln {source} {link}

cqlsh COPY 基本上和做一个 SELECT * FROM 在table上。它将以您指定的格式创建一个包含表数据的文本文件。
根据它们与备份上下文的区别,使用 cqlsh COPY 将包含来自所有节点的数据。鉴于 nodetool snapshot 需要在群集中的每个节点上运行。在节点数大于复制因子的集群中,每个快照仅对其所在的节点有效。
2) 哪一个最合适?
这取决于你想做什么。如果只是需要节点/集群的备份,那么 nodetool snapshot 是一条路要走。如果要将数据导出/导入到新表或集群中,则 COPY 是更好的方法。
同样值得注意的是, cqlsh COPY 运行需要一段时间(取决于表中的数据量),如果配置不正确,可能会超时。 nodetool snapshot 几乎是瞬间的;尽管将快照文件压缩和scping到非集群示例的过程需要一些时间。
3) 如果我们使用 cqlsh 复制命令?
不,没必要。作为 cqlsh COPY 就像一个 SELECT ,它将遵循正常的cassandra读取路径,该路径将检查ram和磁盘上的结构。

相关问题