数据库维护
一致性状态审查和数据库整理
数据库验证¶
| 命令 | 说明 |
|---|---|
!!pb database validate blobs |
验证数据对象的正确性,如数据大小、哈希值 |
!!pb database validate files |
验证文件对象的正确性,如文件与数据的关联 |
!!pb database validate filesets |
验证文件集对象的正确性,如文件集与其文件的关联 |
!!pb database validate backups |
验证备份对象的正确性,如备份与文件集的关联 |
!!pb database validate all |
验证上述全部 |
示例:
!!pb database validate all
示例输出:
> !!pb database validate all
[MCDR] [23:15:38] [PB@fc91-worker-heavy/INFO]: [PB] 正在验证所有数据对象, 请稍等...
[MCDR] [23:15:38] [PB@fc91-worker-heavy/INFO] [prime_backup]: Blob validation start
[MCDR] [23:15:38] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 3000 / 4325 blobs
[MCDR] [23:15:51] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 4325 / 4325 blobs
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Blob validation done: total 4325, validated 4325, ok 4325, bad 0
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 已验证4325/4325个数据对象
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 全部4325个数据对象都是健康的
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 正在验证所有文件对象 (包括文件、文件夹、符号链接), 请稍等...
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: File validation start
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 9147 / 9147 file objects
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: File validation done: total 9147, validated 9147, ok 9147, bad 0
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 已验证9147/9147个文件
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 全部9147个文件都是健康的
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 正在验证所有文件集, 请稍等...
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Fileset validation start
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 26 fileset objects
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 26 / 26 fileset objects
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Fileset validation done: total 26, validated 26, ok 26, bad 0
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 已验证26/26个文件集
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 全部26个文件集都是健康的
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 正在验证所有备份, 请稍等...
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Backup validation start
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Validating 21 backup objects
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO] [prime_backup]: Backup validation done: total 21, validated 21, ok 21, bad 0
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 已验证21/21个备份
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 全部21个备份都是健康的
[MCDR] [23:15:53] [PB@fc91-worker-heavy/INFO]: [PB] 验证完成, 耗时15.32s。数据对象: 健康, 文件对象: 健康, 文件集: 健康, 备份: 健康
验证内容¶
数据对象:
- 文件存在性: 检查数据对象文件是否存在于存储中
- 完整性: 验证数据对象文件的哈希值
- 大小匹配: 检查存储大小与记录是否一致
- 压缩验证: 验证压缩数据的完整性
文件:
- 引用完整性: 检查文件引用的数据对象是否存在
- 文件集关联: 验证文件与文件集的关联关系
- 元数据一致性: 检查文件元数据是否完整
文件集:
- 备份关联: 验证文件集与备份的关联关系
- 文件计数: 检查文件集中的文件数量
- 大小计算: 验证文件集大小计算的正确性
备份:
- 文件集引用: 检查备份引用的文件集是否存在
- 时间戳顺序: 验证备份时间戳的顺序
- 元数据完整性: 检查备份元数据是否完整
当验证发现问题时,会显示详细的错误信息:
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO] [prime_backup]: Blob validation done: total 4325, validated 4325, ok 4322, bad 3
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 已验证4325/4325个数据对象
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 发现了3/4325个异常数据对象
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 文件缺失的数据对象: 2个
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 1. 4fc02ad5e7508949634f012fb96c2968: blob file does not exist
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 2. 54695a153daae89e685894ee966a277e: blob file does not exist
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 信息不匹配的数据对象: 1个
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 1. 8b36d71e250e25527f59b8fd9e0f2dce: stored size mismatch, expect 178, found 176
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 影响范围: 6/9147个文件对象, 2/26个文件集, 16/21个备份
[MCDR] [23:19:19] [PB@fc91-worker-heavy/INFO]: [PB] 见日志文件 pb_files/logs/validate.log 以了解这些数据对象的详细信息及影响范围
数据库清理¶
无效数据清理¶
清理数据库中的孤立对象等无效数据
!!pb database prune
清理内容
- 孤立数据对象: 不再被任何文件引用的数据对象
- 孤立文件: 不再被任何文件集引用的文件
- 孤立文件集: 不再被任何备份引用的文件集
- 基础文件集压缩: 优化基础文件集的存储结构
- 未知数据对象文件: 文件系统中存在但数据库中无记录的数据对象文件
Note
绝大部分情况下,你都无需手动执行此命令。Prime Backup 在日常操作中是会确保数据库处于干净状态
SQLite 整理¶
整理 SQLite 数据库文件,减少磁盘占用
!!pb database vacuum
示例输出:
> !!pb database vacuum
[MCDR] [00:46:11] [PB@51f5-worker-heavy/INFO] [prime_backup]: [PB] 开始压缩数据库...
[MCDR] [00:46:11] [PB@51f5-worker-heavy/INFO] [prime_backup]: [PB] 压缩完成: 耗时 2.34s, 大小 45.67MiB -> 32.15MiB (-13.52MiB, 70.4%)
Note
在默认配置下,Prime Backup 会自动周期性执行 SQLite 数据库任务,因此大部分情况下,你都无需手动执行此命令