From 2fe09aa52896ea6ba908538ead423fbcf4e5d94f Mon Sep 17 00:00:00 2001 From: Wenqi Mou Date: Thu, 24 Apr 2025 14:12:14 -0400 Subject: [PATCH 1/3] br: restore checksum disable Signed-off-by: Wenqi Mou --- br/br-pitr-manual.md | 3 ++- br/br-snapshot-manual.md | 49 +++++++++++++++++++++++++++++++--- br/use-br-command-line-tool.md | 1 + 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/br/br-pitr-manual.md b/br/br-pitr-manual.md index 8932bef2b14c..77f5a75cd5c1 100644 --- a/br/br-pitr-manual.md +++ b/br/br-pitr-manual.md @@ -409,7 +409,8 @@ tiup br log metadata --storage='s3://backup-101/logbackup?access-key=${access-ke > **注意:** > -> 如果 `restore point` 指定 `--full-backup-storage` 为增量备份地址,那么需要保证该备份以及之前的任意增量备份的恢复,均将参数 `--allow-pitr-from-incremental` 设置为 `true`,使增量备份兼容后续的日志备份。 +> - 如果 `restore point` 指定 `--full-backup-storage` 为增量备份地址,那么需要保证该备份以及之前的任意增量备份的恢复,均将参数 `--allow-pitr-from-incremental` 设置为 `true`,使增量备份兼容后续的日志备份。 +> - 关于校验和(Checksum)配置,请参考[校验和配置](/br/br-snapshot-manual.md#校验和checksum)。 执行 `tiup br restore point` 命令,你可以在新集群上进行 PITR,或者只恢复日志备份数据。 diff --git a/br/br-snapshot-manual.md b/br/br-snapshot-manual.md index 8f4a5c9e0332..4d7b0b0d5f3c 100644 --- a/br/br-snapshot-manual.md +++ b/br/br-snapshot-manual.md @@ -21,6 +21,7 @@ summary: 介绍备份与恢复 TiDB 集群快照的命令行。 - [使用表库功能过滤恢复数据](#使用表库功能过滤恢复数据) - [恢复系统表中存储的执行计划绑定信息](#恢复系统表中存储的执行计划绑定信息) - [恢复加密的快照备份数据](#恢复加密的快照备份数据) +- [校验和](#校验和) 如果你想了解如何进行快照备份与恢复,可以参考以下教程: @@ -48,8 +49,7 @@ tiup br backup full \ > **注意:** > -> - 从 v8.5.0 起,在进行全量备份时,BR 工具默认不计算表级别的 checksum (`--checksum=false`) 以提升备份性能。 -> - BR 工具已支持自适应 GC,会自动将 `backupTS`(默认是最新的 PD timestamp)注册到 PD 的 `safePoint`,保证 TiDB 的 GC Safe Point 在备份期间不会向前移动,即可避免手动设置 GC。 +> BR 工具已支持自适应 GC,会自动将 `backupTS`(默认是最新的 PD timestamp)注册到 PD 的 `safePoint`,保证 TiDB 的 GC Safe Point 在备份期间不会向前移动,即可避免手动设置 GC。 备份期间终端会显示进度条,效果如下。当进度条达到 100% 时,表示备份完成。 @@ -178,7 +178,7 @@ tiup br restore full \ - `--ratelimit`:**每个 TiKV** 执行恢复任务的速度上限(单位 MiB/s)。 - `--log-file`:备份日志写入的目标文件。 -恢复期间终端会显示进度条,效果如下。当进度条达到 100% 时,表示恢复完成。在完成恢复后,br 工具为了确保数据安全性,还会校验恢复数据。 +恢复期间终端会显示进度条,效果如下。当进度条达到 100% 时,表示恢复完成。在完成恢复后,如果启用了表级别校验和(参见[校验和配置](#校验和)),br 工具会进行表数据校验以确保数据的逻辑完整性。文件级别的校验和会始终进行,确保恢复文件的基本完整性。 ```shell Split&Scatter Region <--------------------------------------------------------------------> 100.00% @@ -286,3 +286,46 @@ tiup br restore full\ --crypter.method aes128-ctr \ --crypter.key 0123456789abcdef0123456789abcdef ``` + +## 校验和 + +校验和是 BR 工具用于验证备份和恢复数据完整性的一种方式。BR 工具支持两种级别的校验和: + +1. **文件级别校验和**:对备份文件本身进行校验,确保文件在存储和传输过程中的完整性。这一校验始终开启,无法关闭。 +2. **表级别校验和**:对表数据内容进行完整性校验,验证数据的业务逻辑一致性。这一校验默认关闭,可以通过参数开启。 + +从性能和安全性的平衡考虑,BR 对表级别校验和的处理方式如下: + +### 备份时的校验和 + +从 v8.5.0 起,在进行全量备份时,BR 工具默认不计算表级别的校验和(`--checksum=false`),以提升备份性能。如果需要在备份过程中计算表级别校验和,可以显式指定 `--checksum=true`。文件级别的校验和将始终计算,确保备份文件的完整性。 + +计算表级别校验和可以在备份时验证数据的完整性,但会增加备份时间。在大多数情况下,可以安全地使用默认设置(不计算表级别校验和)来提高备份速度。 + +### 恢复时的校验和 + +从 v9.5.0 版本开始,BR 工具在执行恢复操作时默认不进行表级别校验和检查(`--checksum=false`),以提升恢复性能。如果需要进行表级别校验和检查,可以显式指定 `--checksum=true`。文件级别的校验和检查始终进行,确保恢复数据的基本完整性。 + +恢复完成后,通常会进行数据验证来确保数据安全性。在禁用表级别校验和的情况下,表数据的全面验证步骤会被跳过,从而加快恢复过程。对于对数据完整性有严格要求的场景,可以选择启用表级别校验和。 + +### 校验和配置示例 + +在备份时启用表级别校验和: + +```shell +tiup br backup full \ + --pd "${PD_IP}:2379" \ + --storage "s3://${backup_collection_addr}/snapshot-${date}?access-key=${access-key}&secret-access-key=${secret-access-key}" \ + --checksum=true \ + --log-file backupfull.log +``` + +在恢复时启用表级别校验和: + +```shell +tiup br restore full \ + --pd "${PD_IP}:2379" \ + --storage "s3://${backup_collection_addr}/snapshot-${date}?access-key=${access-key}&secret-access-key=${secret-access-key}" \ + --checksum=true \ + --log-file restorefull.log +``` diff --git a/br/use-br-command-line-tool.md b/br/use-br-command-line-tool.md index 7898877186a0..51624d3f0007 100644 --- a/br/use-br-command-line-tool.md +++ b/br/use-br-command-line-tool.md @@ -62,6 +62,7 @@ tiup br backup full --pd "${PD_IP}:2379" \ * `--tikv-max-restore-concurrency`:快照恢复阶段的单个 TiKV 节点的任务最大并发数。 * `--compression`:备份生成文件的压缩算法,支持 `lz4`、`snappy`、`zstd`,默认 `zstd`(多数情况下无须修改)。如何选择不同的压缩算法,可以参考[文档](https://github.com/EighteenZi/rocksdb_wiki/blob/master/Compression.md)。 * `--compression-level`:备份选择的压缩算法对应的压缩级别,`zstd` 默认为 3。大多数情况下无需设置。 +* `--checksum`:是否计算并验证数据的校验和,默认为 `false`。详细信息请参考[校验和配置](/br/br-snapshot-manual.md#校验和checksum)。 ## 全量备份命令行 From a3478436d8e4d9a2226699fef04d8d84731494e4 Mon Sep 17 00:00:00 2001 From: BornChanger <97348524+BornChanger@users.noreply.github.com> Date: Mon, 28 Apr 2025 14:24:40 +0800 Subject: [PATCH 2/3] Update br/br-snapshot-manual.md --- br/br-snapshot-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/br/br-snapshot-manual.md b/br/br-snapshot-manual.md index 4d7b0b0d5f3c..0b7985f5084d 100644 --- a/br/br-snapshot-manual.md +++ b/br/br-snapshot-manual.md @@ -292,7 +292,7 @@ tiup br restore full\ 校验和是 BR 工具用于验证备份和恢复数据完整性的一种方式。BR 工具支持两种级别的校验和: 1. **文件级别校验和**:对备份文件本身进行校验,确保文件在存储和传输过程中的完整性。这一校验始终开启,无法关闭。 -2. **表级别校验和**:对表数据内容进行完整性校验,验证数据的业务逻辑一致性。这一校验默认关闭,可以通过参数开启。 +2. **表级别校验和**:对表数据内容进行完整性校验,验证数据的业务逻辑一致性。这一校验可以通过参数开启或者关闭。 从性能和安全性的平衡考虑,BR 对表级别校验和的处理方式如下: From 23ff3aa8d0c88d1f3489f44436afd625b5b219f2 Mon Sep 17 00:00:00 2001 From: BornChanger <97348524+BornChanger@users.noreply.github.com> Date: Mon, 28 Apr 2025 14:24:49 +0800 Subject: [PATCH 3/3] Update br/br-snapshot-manual.md --- br/br-snapshot-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/br/br-snapshot-manual.md b/br/br-snapshot-manual.md index 0b7985f5084d..09287b0d8ae8 100644 --- a/br/br-snapshot-manual.md +++ b/br/br-snapshot-manual.md @@ -304,7 +304,7 @@ tiup br restore full\ ### 恢复时的校验和 -从 v9.5.0 版本开始,BR 工具在执行恢复操作时默认不进行表级别校验和检查(`--checksum=false`),以提升恢复性能。如果需要进行表级别校验和检查,可以显式指定 `--checksum=true`。文件级别的校验和检查始终进行,确保恢复数据的基本完整性。 +从 v9.0.0 版本开始,BR 工具在执行恢复操作时默认不进行表级别校验和检查(`--checksum=false`),以提升恢复性能。如果需要进行表级别校验和检查,可以显式指定 `--checksum=true`。文件级别的校验和检查始终进行,确保恢复数据的基本完整性。 恢复完成后,通常会进行数据验证来确保数据安全性。在禁用表级别校验和的情况下,表数据的全面验证步骤会被跳过,从而加快恢复过程。对于对数据完整性有严格要求的场景,可以选择启用表级别校验和。