将源数据复制到其他位置
文件系统快照
SELECT 查询的
Distributed 表中排除。
这样一来,这些副本上的快照就不会被任何修改数据的查询触及。
此外,这些副本还可以采用特殊的硬件配置,例如每台服务器挂载更多
磁盘,从而更具成本效益。
对于数据量较小的场景,直接对远程表执行简单的 INSERT INTO ... SELECT ...
也可能可行。
对 parts 的操作
ALTER TABLE ... FREEZE PARTITION ... 查询创建
表分区的本地副本。该操作通过在 /var/lib/clickhouse/shadow/
目录中创建硬链接来实现,因此通常不会为旧数据额外占用磁盘空间。创建出的
文件副本不受 ClickHouse server 管理,因此你可以直接将它们保留在那里:
这样就得到了一个简单的 Backup,不需要任何额外的外部系统,
但它仍然容易受到硬件故障的影响。因此,最好将它们
远程复制到其他位置,然后删除本地副本。
分布式文件系统和对象存储仍然是不错的选择,
但容量足够大的普通挂载文件服务器也同样可行
(在这种情况下,传输将通过网络文件系统,或者也可以通过 rsync 进行) 。
可以使用 ALTER TABLE ... ATTACH PARTITION ... 从 Backup 中恢复数据
有关分区操作相关查询的更多信息,请参阅
ALTER 文档。
还有一个第三方工具可用于自动化这种方法:clickhouse-backup。