Skip to content

Instantly share code, notes, and snippets.

@suzaku
Last active June 25, 2019 09:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suzaku/0aa986f49fd74737ae58289604b64e8c to your computer and use it in GitHub Desktop.
Save suzaku/0aa986f49fd74737ae58289604b64e8c to your computer and use it in GitHub Desktop.
用 vlog_health_checker 检查及修复错位的 vlog

安装

  1. 下载 vlog_health_checker
  2. tar -xzf vlog_health_checker.tgz

适用场景

保存 binlog 过程中,因为磁盘写满等意外导致出现不完整的写入,使 pump 在内存中维护的文件指针出现偏差,影响后续 binlog 位置的索引。 使用 vlog_health_checker 的第一步,就是先检查确定是否是上述场景。

使用

pump 数据目录说明

pump 启动时指定的 -data-dir 下面会有两个子目录:

  1. kv: 索引 binlog 数据
  2. value: 存放 binlog 数据,出现损坏的 vlog 文件在这个目录下

注意

这个工具需要打开 pump 使用的 LevelDB,所以需要先停掉 pump

检查

vlog_health_checker -kv_dir kv路径 疑似损坏的vlog路径

在输出中,察看是否存在 Corruption detected 后跟着 Pointer offset mismatch 的现象,如果有就可以确定是适用的场景。

修复

vlog_health_checker -kv_dir kv路径 -repair 疑似损坏的vlog路径

修复就是在检查命令上面再加上 -repair 参数,它会扫描指定的 binlog vlog 文件,并将正确的位置写入指定 kv 目录中的索引。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment