跳至主要内容

clickhouse-static-files-disk-uploader

输出一个包含指定 ClickHouse 表元数据的 data 目录。此元数据可用于在另一个服务器上创建一个 ClickHouse 表,该表包含由 web 磁盘支持的只读数据集。

请勿使用此工具迁移数据。请改用 BACKUPRESTORE 命令

用法

$ clickhouse static-files-disk-uploader [args]

命令

命令描述
-h, --help打印帮助信息
--metadata-path [path]包含指定表元数据的路径
--test-mode启用 test 模式,该模式向给定 URL 提交包含表元数据的 PUT 请求
--link创建符号链接而不是将文件复制到输出目录
--url [url]test 模式的 Web 服务器 URL
--output-dir [dir]non-test 模式下输出文件的目录

检索指定表的元数据路径

使用 clickhouse-static-files-disk-uploader 时,您必须获取所需表的元数据路径。

  1. 运行以下查询,指定您的目标表和数据库

SELECT data_paths
FROM system.tables
WHERE name = 'mytable' AND database = 'default';
  1. 这将返回指定表的 data 目录的路径

┌─data_paths────────────────────────────────────────────┐
│ ['./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/'] │
└───────────────────────────────────────────────────────┘

将表元数据目录输出到本地文件系统

使用目标输出目录 output 和给定的元数据路径,执行以下命令

$ clickhouse static-files-disk-uploader --output-dir output --metadata-path ./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/

如果成功,您应该看到以下消息,并且 output 目录应包含指定表的元数据

Data path: "/Users/john/store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee", destination path: "output"

将表元数据目录输出到外部 URL

此步骤类似于将 data 目录输出到本地文件系统,但增加了 --test-mode 标志。您必须指定目标 URL(通过 --url 标志)而不是输出目录。

启用 test 模式后,表元数据目录将通过 PUT 请求上传到指定的 URL。

$ clickhouse static-files-disk-uploader --test-mode --url http://nginx:80/test1 --metadata-path ./store/bcc/bccc1cfd-d43d-43cf-a5b6-1cda8178f1ee/

使用表元数据目录创建 ClickHouse 表

获得表元数据目录后,可以使用它在另一台服务器上创建 ClickHouse 表。

请参见 此 GitHub 存储库,其中展示了一个演示。在示例中,我们使用 web 磁盘创建了一个表,这使我们可以将表附加到另一台服务器上的数据集。