From 1c9da7b3320893afcb989e8804ce953ab51ac71b Mon Sep 17 00:00:00 2001 From: 3pointer Date: Wed, 4 Jun 2025 14:03:36 +0800 Subject: [PATCH 1/5] log backup: update metafile format --- br/br-log-architecture.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/br/br-log-architecture.md b/br/br-log-architecture.md index a2d7b2c23f7e..1841ef09a8d6 100644 --- a/br/br-log-architecture.md +++ b/br/br-log-architecture.md @@ -99,7 +99,7 @@ PITR 的流程如下: ├── v1 │   ├── backupmeta │   │   ├── ... -│   │   └── {resolved_ts}-{uuid}.meta +│   │   └── {flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta │   ├── global_checkpoint │   │   └── {store_id}.ts │   └── {date} @@ -112,7 +112,7 @@ PITR 的流程如下: 备份文件目录结构的说明如下: -- `backupmeta`:备份的元数据。文件名中的 `resolved_ts` 指备份的进度,表示该 TSO 之前的数据已被完整备份。但是需注意,该 TSO 仅反映部分分片的进度。 +- `backupmeta`:备份的元数据文件。文件名中包含以下若干关键时间戳字段:flushTs:备份文件的定期上传时间戳,从 PD 获取,具有全局唯一性。minDefaultTs:针对 write CF 文件特有的最小事务起始时间,表示该备份覆盖的最早事务起点。 minTs / maxTs:该文件中包含的所有 key-value 数据的最小和最大时间戳。上述所有时间戳字段均采用 16 位固定长度的十六进制字符串编码,左侧补零以保持长度一致。这样的编码方式有助于文件名按字典序自然排序,便于在外部存储系统中高效进行批量列举和范围过滤。 - `global_checkpoint`:备份的全局进度。它记录了可以被 `br restore point` 恢复到的最晚时间点。 - `{date}/{hour}`:对应日期和小时的备份数据。注意在清理存储的时候,需使用 `br log truncate`,不能手动删除数据。这是因为 metadata 会指向这里的数据,手动删除它们会导致恢复失败或恢复后数据不一致等问题。 @@ -122,9 +122,9 @@ PITR 的流程如下: ├── v1 │   ├── backupmeta │   │   ├── ... -│   │   ├── 435213818858112001-e2569bda-a75a-4411-88de-f469b49d6256.meta -│   │   ├── 435214043785779202-1780f291-3b8a-455e-a31d-8a1302c43ead.meta -│   │   └── 435214443785779202-224f1408-fff5-445f-8e41-ca4fcfbd2a67.meta +│   │   ├── 060c4bc7b0cdd582-06097a780d1ba138-060ab960016d2f00-060c0b9e47d4787b.meta +│   │   ├── 06123bc6a0cdd591-060c3d24585be000-060c4453954a4000-060c4bc7b0cdcfa4.meta +│   │   └── 063c2ac1c0cdd5c3-0609d2e6b3bcb064-060ab960016d2f84-060c0b9e47d47a77.meta │   ├── global_checkpoint │   │   ├── 1.ts │   │   ├── 2.ts From 4db6a6df54348f528117b29afb8bdc66d838267f Mon Sep 17 00:00:00 2001 From: 3pointer Date: Tue, 15 Jul 2025 17:57:22 +0800 Subject: [PATCH 2/5] Update br/br-log-architecture.md Co-authored-by: Grace Cai --- br/br-log-architecture.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/br/br-log-architecture.md b/br/br-log-architecture.md index 1841ef09a8d6..77c408c74343 100644 --- a/br/br-log-architecture.md +++ b/br/br-log-architecture.md @@ -112,7 +112,14 @@ PITR 的流程如下: 备份文件目录结构的说明如下: -- `backupmeta`:备份的元数据文件。文件名中包含以下若干关键时间戳字段:flushTs:备份文件的定期上传时间戳,从 PD 获取,具有全局唯一性。minDefaultTs:针对 write CF 文件特有的最小事务起始时间,表示该备份覆盖的最早事务起点。 minTs / maxTs:该文件中包含的所有 key-value 数据的最小和最大时间戳。上述所有时间戳字段均采用 16 位固定长度的十六进制字符串编码,左侧补零以保持长度一致。这样的编码方式有助于文件名按字典序自然排序,便于在外部存储系统中高效进行批量列举和范围过滤。 +- `backupmeta` 目录:存储备份的元数据文件 `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta`。文件名中包含以下时间戳字段: + + - `flushTs`:该备份文件被定期上传至外部存储的时间戳。该值从 PD 获取,具有全局唯一性。 + - `minDefaultTs`:仅针对 Write CF 文件,表示该备份所覆盖的最早事务起始时间。 + - `minTs` 和 `maxTs`:该备份文件内包含的所有 key-value 数据的最小时间戳和最大时间戳。 + + 这些时间戳均采用 16 位固定长度的十六进制字符串编码,左侧补零以保证长度一致。这样的编码设计可以确保文件名按照字典序自然排序,方便在外部存储系统中高效执行批量列举和范围过滤操作。 + - `global_checkpoint`:备份的全局进度。它记录了可以被 `br restore point` 恢复到的最晚时间点。 - `{date}/{hour}`:对应日期和小时的备份数据。注意在清理存储的时候,需使用 `br log truncate`,不能手动删除数据。这是因为 metadata 会指向这里的数据,手动删除它们会导致恢复失败或恢复后数据不一致等问题。 From 60a9f19bb89db7edd52343aa617f9325acfc3c93 Mon Sep 17 00:00:00 2001 From: 3pointer Date: Thu, 17 Jul 2025 13:30:07 +0800 Subject: [PATCH 3/5] Update br/br-log-architecture.md Co-authored-by: Grace Cai --- br/br-log-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/br/br-log-architecture.md b/br/br-log-architecture.md index 77c408c74343..12b544498d34 100644 --- a/br/br-log-architecture.md +++ b/br/br-log-architecture.md @@ -112,7 +112,7 @@ PITR 的流程如下: 备份文件目录结构的说明如下: -- `backupmeta` 目录:存储备份的元数据文件 `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta`。文件名中包含以下时间戳字段: +- `backupmeta` 目录:存储备份的元数据文件。从 v8.5.3 和 v9.0.0 起,该文件命名格式从 `{resolved_ts}-{uuid}.meta` 修改为 `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta`。文件名中包含以下时间戳字段: - `flushTs`:该备份文件被定期上传至外部存储的时间戳。该值从 PD 获取,具有全局唯一性。 - `minDefaultTs`:仅针对 Write CF 文件,表示该备份所覆盖的最早事务起始时间。 From 41ee9a6cee13cb7bc5a5f5c99dd2d435416f5d10 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Tue, 12 Aug 2025 16:34:08 +0800 Subject: [PATCH 4/5] Update br/br-log-architecture.md --- br/br-log-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/br/br-log-architecture.md b/br/br-log-architecture.md index 12b544498d34..0cd5fcc8532c 100644 --- a/br/br-log-architecture.md +++ b/br/br-log-architecture.md @@ -112,7 +112,7 @@ PITR 的流程如下: 备份文件目录结构的说明如下: -- `backupmeta` 目录:存储备份的元数据文件。从 v8.5.3 和 v9.0.0 起,该文件命名格式从 `{resolved_ts}-{uuid}.meta` 修改为 `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta`。文件名中包含以下时间戳字段: +- `backupmeta` 目录:存储备份的元数据文件。从 v8.5.3 起,该文件命名格式从 `{resolved_ts}-{uuid}.meta` 修改为 `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta`。文件名中包含以下时间戳字段: - `flushTs`:该备份文件被定期上传至外部存储的时间戳。该值从 PD 获取,具有全局唯一性。 - `minDefaultTs`:仅针对 Write CF 文件,表示该备份所覆盖的最早事务起始时间。 From 150c029866e10bca993d27dd3f382a9c489193f6 Mon Sep 17 00:00:00 2001 From: Test User Date: Tue, 12 Aug 2025 17:27:24 +0800 Subject: [PATCH 5/5] Update br-log-architecture.md --- br/br-log-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/br/br-log-architecture.md b/br/br-log-architecture.md index 0cd5fcc8532c..a25990fa073b 100644 --- a/br/br-log-architecture.md +++ b/br/br-log-architecture.md @@ -87,7 +87,7 @@ PITR 的流程如下: 日志备份会产生如下类型文件: -- `{resolved_ts}-{uuid}.meta` 文件:每个 TiKV 节点每次上传日志备份数据时会生成一个该文件,保存本次上传的所有日志备份数据文件。其中 `{resolved_ts}` 是本节点的日志备份的 Resolved Timestamp,所有 TiKV 节点最小的 Resolved Timestamp 就是日志备份任务最新的 `resolved_ts`;`{uuid}` 是在生成该文件时随机生成的。 +- `{flushTs}-{minDefaultTs}-{minTs}-{maxTs}.meta` 文件:每个 TiKV 节点每次上传日志备份数据时会生成一个该文件,保存本次上传的所有日志备份数据文件。文件名中的字段含义请参考[备份文件目录结构](#备份文件目录结构)。 - `{store_id}.ts` 文件:每个 TiKV 节点每次上传日志备份数据时会使用 global checkpoint ts 更新该文件。其中 `{store_id}` 是 TiKV 的 store ID。 - `{min_ts}-{uuid}.log` 文件:存储备份下来的 kv 数据变更记录。其中 `{min_ts}` 是该文件中所有 kv 数据变更记录数对应的最小 ts;`{uuid}` 是在生成该文件时随机生成的。 - `v1_stream_truncate_safepoint.txt` 文件:保存最近一次通过 `br log truncate` 删除日志备份数据后,存储中最早的日志备份数据对应的 ts。