目前,我们有两个选项可以将数据备份到cassandra键空间中的表中。我们可以选择任何一个用户 nodetool
命令或使用 copy
来自 cqlsh
终端。
1) 这些命令之间有什么区别?
2) 哪一个最合适?
3) 如果我们使用 nodetool
为了进行备份,我们通常会在发出 nodetool snapshot command
. 所以我的问题是,如果我们使用 cqlsh copy
命令?
感谢您的帮助。
非常感谢。
目前,我们有两个选项可以将数据备份到cassandra键空间中的表中。我们可以选择任何一个用户 nodetool
命令或使用 copy
来自 cqlsh
终端。
1) 这些命令之间有什么区别?
2) 哪一个最合适?
3) 如果我们使用 nodetool
为了进行备份,我们通常会在发出 nodetool snapshot command
. 所以我的问题是,如果我们使用 cqlsh copy
命令?
感谢您的帮助。
非常感谢。
2条答案
按热度按时间8gsdolmq1#
nodetool snapshot对于任何数量的数据都是很好的方法,它可以在几秒钟内创建硬链接。copy命令将花费大量时间,因为这取决于数据和集群的大小。对于较少的数据和测试,可以使用copy命令,但对于生产节点,建议使用tool snapshot。
yk9xbfzb2#
好问题!
1) 这些命令之间有什么区别?
运行
nodetool snapshot
在请求的键空间上创建到sstable文件的硬链接。这与从(linux)命令行运行此命令相同:一
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和磁盘上的结构。