我正在将 Cassandra 与 Docker 结合使用。重点是我在其他主机上有一个外部键空间定义(其中有自己的适当表和数据存储),我想将该主机的 Cassandra 中的数据导入我的 docker Cassandra 中。
- 主机 Cassandra 版本为:[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | 本机协议 v4]
- 我的 Docker Cassandra 版本是:[cqlsh 5.0.1 | Cassandra 3.11.3 | CQL spec 3.4.4 | Native protocol v4]
因此,因为我认为这不是兼容性问题,所以我遵循了以下步骤:
使用导出的键空间定义
cqlsh -e 'describe mykeyspac' > mykeyspace.cql
转到外部主机,然后使用以下命令创建键空间数据的快照:
scp myuser@host:/var/lib/cassandra/data/mykeyspace/home/myuserid/docker-data/mykeyspace
(不要介意这个代码,重点是我将数据的完整副本下载到了我的本地计算机)。
将此卷挂载到
docker-compose.yaml
文件中的docker cassandra中- 启动 Docker
使用以下方式连接到 Docker
docker exec -it container-id bash
并检查该卷是否正确安装。
使用
cqlsh
创建的新键空间,完全没有问题。
然后使用cqlsh
检查键空间是否正确创建,表和其他定义是否存在。但执行简单的 SELECT 查询会得到 0 行,但数据实际上位于
/var/lib/cassandra/data/mykeyspace
在 Cassandra Docker 中。
那么,这里有什么问题?
有人能帮助我吗?