【发布时间】:2021-09-10 22:41:16
【问题描述】:
我使用 sstableloader 从配置为复制四次的 4 个节点的集群中导入快照。快照的文件夹结构为:
<keyspace>/<tablename>/snapshots/<timestamp>
最终每个快照文件夹中有 4 个时间戳,每个节点一个。它们出现在同一个快照目录中,因为我对它们进行了 tar-gzip 压缩并提取了同一目录中所有节点的快照。
我注意到 sstableloader 无法处理这个问题,因为该文件夹应该以 / 作为工具的假设结尾。因此,我将文件夹重组为
<timestamp>/<keyspace>/<tablename>
然后我将 sstableloader 应用于每个时间戳:
sstableloader -d localhost <keyspace>/<tablename>
这似乎很棘手,因为我重新构建了文件夹,我同意,但我无法让 sstableloader 工具正常工作。如果有更好的方法,请告诉我。
但是,这行得通:
Established connection to initial hosts
Opening sstables and calculating sections to stream
Streaming relevant part of <keyspace>/<tablename>/<keyspace>-<tablename>-ka-953-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-911-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-952-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-955-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-951-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-798-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-954-Data.db <keyspace>/<tablename>/<keyspace>-<tablename>-ka-942-Data.db to [/127.0.0.1]
progress: [/127.0.0.1]0:8/8 100% total: 100% 0 MB/s(avg: 7 MB/s)
Summary statistics:
Connections per host: : 1
Total files transferred: : 8
Total bytes transferred: : 444087547
Total duration (ms): : 59505
Average transfer rate (MB/s): : 7
Peak transfer rate (MB/s): : 22
所以我为每个时间戳(以及每个键空间和每个表名)重复了该命令,并且所有数据都导入到我的笔记本电脑的单节点设置中(默认在从 ppa 在 ubuntu 上安装 cassandra 后)。
需要注意的是,在使用 sstableloader 导入之前,我在 4 节点集群服务器上使用复制 1 而不是 3 初始化了密钥空间。
CREATE KEYSPACE <keyspace> WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
不过,我注意到了这一点:
$ du -sh /var/lib/cassandra/data/<keyspace>/<tablename>-e08e2540e82a11e4a64d8d887149c575/
6,4G /var/lib/cassandra/data/<keyspace>/<tablename>-e08e2540e82a11e4a64d8d887149c575/
但是,当我查询快照的大小时:
$ du -sh 142961465*/<keyspace>/<tablename>
2,9G 1429614655449/<keyspace>/<tablename>
3,1G 1429614656562/<keyspace>/<tablename>
2,9G 1429614656676/<keyspace>/<tablename>
2,7G 1429614656814/<keyspace>/<tablename>
快照的总大小为 11.6GB,复制 3 的基本数据部分应约为 3.9GB,但/var/lib/cassandra/data/<keyspace>/<tablename>-e08e2540e82a11e4a64d8d887149c575/ 文件夹要大得多。为什么会这样? cassandra / sstableloader 有多聪明?是否以某种方式过滤了不同的冗余对?
【问题讨论】:
标签: cassandra