首页/数据/数据库速查/XtraBackup LSN 与 checkpoints 解读
备份与恢复56 条

XtraBackup LSN 与 checkpoints 解读

xtrabackup_checkpoints 记录每份备份的 LSN 窗口(from/to/last),是增量链衔接与 PITR 定位的依据;backup_type 区分 full/inc。

数据库速查数据更新于 2026-10-13

LSN 与 checkpoints 是什么

每份 XtraBackup 备份目录里都有一个 xtrabackup_checkpoints 文件,记录这份备份的 LSN 窗口:from_lsn 是起点、to_lsn 是数据文件一致点、last_lsn 是包含 redo 的终点。它既是增量备份能否衔接的依据,也是做时间点恢复时定位起点的依据。backup_type 字段区分这份是完整备份还是增量备份。读懂这几个字段,才能判断一条增量链是不是完整。

基本信息

from_lsn这份备份的起始 LSN
to_lsn数据文件达到一致状态的 LSN
last_lsn含 redo 记录的终点,等于下一份增量的起点参考
backup_typefull-backuped(全备)或 incremental(增量)
衔接规则上一份的 to_lsn 与下一份的 from_lsn/last_lsn 需要按官方规则对齐

典型使用场景

  • 增量链体检:备份脚本读取各份 checkpoints,检查 LSN 是否连续
  • 恢复前确认:恢复前核对链条完整性,避免恢复中途才发现缺口
  • 时间点恢复定位:结合 binlog 位点,确定从哪份备份开始重放
  • 备份资产审计:定期抽查备份的 backup_type 与时间,确认全备与增量策略按计划执行
  • 故障排查:增量备份报错时,先看上一份的 last_lsn 与当前 from_lsn 是否对得上

查看 checkpoints

查看 checkpoints
# 全备的 checkpoints
cat /data/backup/base/xtrabackup_checkpoints
# backup_type = full-backuped
# from_lsn / to_lsn / last_lsn 构成这份备份的窗口
# 增量的 checkpoints
cat /data/backup/inc1/xtrabackup_checkpoints
# backup_type = incremental,from_lsn 应衔接上一份的区间
# 批量检查多份备份的类型与时间,脚本里常用
for d in /data/backup/inc*; do
  echo "$d"; grep -E 'backup_type|from_lsn|last_lsn' $d/xtrabackup_checkpoints
done

字段读法

字段含义异常表现
backup_type全备或增量全备后仍是 incremental 说明参数写错
from_lsn备份起始点与上一份断裂则链条不完整
to_lsn数据一致点恢复时以此判断数据状态
last_lsn含 redo 的终点误当 to_lsn 使用会漏掉已提交事务
备份脚本应自动校验链条连续性并把结果写入日志:人工检查在增量多、周期长的情况下几乎不可能覆盖。
手工拷贝或移动备份目录时,务必连同 checkpoints 与其他元数据文件一起搬:只搬数据文件会让链条校验失败,恢复时才发现。

易错点

  • 搬运备份时只拷部分文件:checkpoints 与元数据缺失导致无法 prepare,恢复时才发现备份不可用
  • 把 last_lsn 当 to_lsn 使用:两者含义不同,误用会漏掉 redo 里的已提交事务
  • 增量链断裂却不告警:断链后新的增量依然能生成,但恢复时无法串起来,必须靠脚本主动校验
  • 只看最新一份备份的状态:链条中间某一环失败过,后续备份看起来正常,实际不可恢复
  • 恢复时不做演练:LSN 字段理解正确但没跑过完整恢复流程,真实故障时才发现步骤有缺口

数据来源与参考

  • Percona XtraBackup 文档: LSN 与 checkpoints

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌