CockroachDB恢复数据库时,行与索引条目数为何出现差异?
CockroachDB备份与恢复指标差异原因及数据完整性确认
现象回顾
备份完成时的指标输出:
job_id | status | fraction_completed | rows | index_entries | bytes ---------------------+-----------+--------------------+---------+---------------+-------------- 903515943941406094 | succeeded | 1 | 100000 | 200000 | 4194304
恢复完成时的指标输出:
job_id | status | fraction_completed | rows | index_entries | bytes ---------------------+-----------+--------------------+---------+---------------+-------------- 803515943941406094 | succeeded | 1 | 99999 | 199999 | 4194200
指标差异的原因
- 行数差异:备份统计的是包含内部元数据、临时记录或已标记删除但未彻底清理的 tombstone 行的总数;而恢复时系统会自动过滤这些非业务相关的行,只写入有效的业务数据行。
- 索引条目数差异:备份时会原样保存所有索引的原始条目,包括一些冗余或待清理的索引垃圾;恢复过程中重建索引时,系统会自动清理这些冗余条目,所以索引条目数会略少。
- 字节数差异:一方面恢复不会写入备份里的内部元数据、临时数据;另一方面恢复时数据库可能会对存储格式做细微优化(比如页对齐、压缩调整),导致字节数略有不同。
数据是否已全部恢复
只要恢复任务的状态是succeeded,且通过业务层面的验证(比如核对关键表的行数、查询核心业务数据确认匹配),就说明业务数据已经完整恢复。上述指标差异是CockroachDB备份恢复流程中的正常现象,不会影响实际业务数据的完整性。
内容的提问来源于stack exchange,提问作者Faizan Qazi
相关产品推荐
相关产品推荐

