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_type | full-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 与其他元数据文件一起搬:只搬数据文件会让链条校验失败,恢复时才发现。