跳到主要内容
跳到主要内容

clickhouse-static-files-disk-uploader

输出包含指定 ClickHouse 表元数据的数据目录。该元数据可用于在不同服务器上创建包含仅读数据集的 ClickHouse 表,该数据集由 web 磁盘支持。

请勿使用此工具迁移数据。相反,请使用 BACKUPRESTORE 命令

使用方法

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

命令

命令描述
-h, --help打印帮助信息
--metadata-path [path]包含指定表元数据的路径
--test-mode启用 test 模式,该模式将表元数据以 PUT 请求提交到给定的 URL
--link创建符号链接,而不是将文件复制到输出目录
--url [url]test 模式的网络服务器 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_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

此步骤与将数据目录输出到本地文件系统类似,但添加了 --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 磁盘创建一个表,这允许我们将表附加到不同服务器上的数据集。