跳转到主要内容

语法

有关各命令的详细信息,请参见”命令摘要”

配置磁盘备份目标位置

为本地磁盘配置备份目标位置

在下面的示例中,你会看到备份目标位置被指定为 Disk('backups', '1.zip')。 要使用 Disk 备份引擎,首先需要在下面的路径添加一个用于指定 备份目标位置的文件:
例如,下面的配置定义了一个名为 backups 的磁盘,并将其添加到 backupsallowed_disk 列表中:

为 S3 磁盘配置备份目标位置

也可以通过在 ClickHouse 存储配置中配置 S3 磁盘,将 BACKUP/RESTORE 到 S3。像上文为本地磁盘所做的那样,在 /etc/clickhouse-server/config.d 中添加一个文件来配置该磁盘。
对 S3 磁盘执行 BACKUP/RESTORE 的方式与本地磁盘相同:
  • 此磁盘不应用于 MergeTree 本身,只用于 BACKUP/RESTORE
  • 如果你的表使用 S3 存储,且磁盘类型不同, 则不会使用 CopyObject 调用将 parts 复制到目标端 bucket,而是 通过下载后再上传来完成,这样效率非常低。在这种情况下,建议优先使用 BACKUP ... TO S3(<endpoint>) 语法来处理此类用例。

本地磁盘备份/恢复使用示例

对表进行备份和恢复

运行以下命令,创建本示例中将用于备份和恢复的测试数据库和表:
创建数据库和表:
预处理并插入 1000 行随机数据:
接下来,你需要在以下路径创建一个文件,用于指定 backup destination:
如果 clickhouse-server 正在运行,则需要重启它,更改才会生效。
要备份该表,可以运行:
Query
Response
如果该表为空,可使用以下命令从备份中恢复:
Query
Response
如果表 test.table 中已有数据,上述 RESTORE 将会失败。 设置 allow_non_empty_tables=true 允许 RESTORE TABLE 将数据插入 到非空表中。这会将表中原有数据与从备份中提取的数据混合在一起。 因此,此设置可能会导致表中出现重复数据,应谨慎使用。
要恢复已包含数据的表,请运行:
表在恢复或备份时可以使用新名称:
此备份的归档结构如下:
可以使用 zip 以外的格式。更多详细信息,请参阅下方的”tar 归档形式的备份”

磁盘增量备份

ClickHouse 中的基础备份是初始的全量备份,后续的 增量备份都基于它创建。增量备份仅存储自基础备份以来 发生的更改,因此必须保留基础备份,才能从任何 增量备份中恢复。可以通过设置 base_backup 来指定基础备份的存储位置。
增量备份依赖基础备份。必须保留基础备份, 才能从增量备份中恢复。
要为某个表创建增量备份,首先请创建一个基础备份:
增量备份和基础备份中的所有数据都可以通过以下命令恢复到 新表 test_db.test_table2

保护备份

写入磁盘的备份文件可以设置密码。 可使用 password 设置指定密码。
密码保护仅支持 ZIP 归档 (.zip.zipx) 。 备份路径必须以 .zip.zipx 结尾,密码才会生效。 对任何其他格式使用密码——包括 tar 归档和非归档路径——都会 导致 BAD_ARGUMENTS 错误:Password is not applicable, backup cannot be encrypted
要恢复受密码保护的备份,必须再次 通过 password 设置指定密码:

tar 归档形式的备份

备份不仅可以存储为 zip 归档,也可以存储为 tar 归档。 其功能与 zip 相同,不同之处在于 tar 归档不支持密码保护。 此外,tar 归档还支持多种 压缩方法。 要将表备份为 tar 归档:
从 tar 归档恢复:
要更改压缩方法,应在 备份名称后附加正确的文件后缀。例如,要使用 gzip 压缩 tar 归档文件,请运行:
支持的压缩文件后缀如下:
  • tar.gz
  • .tgz
  • tar.bz2
  • tar.lzma
  • .tar.zst
  • .tzst
  • .tar.xz

压缩设置

可分别通过设置 compression_methodcompression_level 来指定压缩方法和压缩级别。

恢复特定分区

如果需要恢复某个表的特定分区,可以显式指定这些分区。 下面创建一个简单的分区表,将数据分到四个分区中,插入一些数据,然后 仅备份第 1 和第 4 个分区:
运行以下命令来备份分区 1 和 4:
运行以下命令,恢复分区 1 和 4:
最后修改于 2026年7月2日