cqlsh-e“复制表”永远挂起

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

我有一些表要从一个cassandra集群复制到另一个集群;我认为最简单的方法是运行一系列shell命令,如:
cqlsh-e“将keyspace.table1复制到'table1.csv',header=true;
(然后是一系列反向shell命令以复制到新集群中)。
但是,当我运行这个时,我看到:
使用11个子进程
使用列[column1,column2,column3,column4]启动keyspace.table1的副本。
但是这个过程永远挂起,永远不会添加到目标csv文件中。

cuxqih21

cuxqih211#

使用 nodetool snapshot -cf <table_name> -t <snpashot_id> <keyspace> 其中keyspace和table name是结构的名称;snapshot\u id将是一个帮助您识别快照的标签。
您可以使用验证快照 nodetool listsnapshots ,然后按照此处说明的步骤还原它。
一旦你完成了这个程序,你就需要做一些家庭清洁 nodetool clearsnapshot <snapshot_id>

u0sqgete

u0sqgete2#

您要复制的表中的行数和每行大小是多少?如果一行和#行的大小都很大,那么使用copy就不是最佳选择。
您可以尝试的一个选项是减少批处理大小。

  1. cqlsh -e "copy table keyspace.table1 to 'table1.csv' with header = true AND MAXBATCHSIZE=5;

这可能需要更长时间,但肯定会结束。我也遇到过类似的问题,一个表有近3000万条记录,减少批处理大小也有帮助。

相关问题