TiFlash 数据校验

本文档介绍 TiFlash 的数据校验机制以及相关的工具。

使用场景

数据损坏通常意味着严重的硬件故障。在这种情形下,即使尝试自主修复,也会使得数据的可靠性下降。TiFlash 默认对数据文件进行基础的校验,使用固定的 City128 算法。一旦发现数据校验不符的情况,TiFlash 将立刻报错退出,避免因错误数据造成次生灾害。此时,您需要手动检查干预并重新同步数据,才可以恢复节点的使用。

自 v5.4.0 起,TiFlash 完善了数据校验功能,默认使用 XXH3 算法,并允许用户调整校验帧大小和校验算法。

校验机制简介

TiFlash 的数据校验功能基于 DTFile(即 DeltaTree File)提供。DTFile 是 TiFlash 落盘数据的存储文件,共有三版格式:

版本状态校验机制备注
V1已废弃在数据文件中内嵌哈希值
V2v6.0.0 之前的默认格式在数据文件中内嵌哈希值在 V1 的基础上增加了列数据的统计信息
V3v6.0.0 及之后的默认格式包含元数据,标记数据校验,支持多种哈希算法于 v5.4 版本引入

DTFile 存储在数据文件夹目录下的 stable 文件夹内。目前启用的格式均为文件夹形式,即具体数据均储存在名字类似 dmf_<file id> 的文件夹下的多个子文件中。

使用数据校验

TiFlash 支持自动和手动进行数据校验:

  • 自动数据校验 (storage.format_version 配置项):
    • v6.0.0 之后默认使用 DTFile V3 版本校验机制。
    • v6.0.0 之前默认使用 DTFile V2 版本校验机制。
    • 如需切换版本校验机制,参见 TiFlash 配置文件。默认配置经过大量测试,不推荐修改。
  • 手动数据校验,参见 DTTool 使用文档

校验工具

除了 TiFlash 在读取所需数据时进行的自动校验,在 v5.4.0 版本时还引入了手动检查文件完整性的工具,详情请见 DTTool 的使用文档