首批通过分布式安全可靠测评,为关键业务系统打造
使用 ob_admin 分析 clog 日志定位数据丢失问题
更新时间:2026-06-12 04:01
适用版本
OceanBase 所有版本。
简介
ob_admin 是 OceanBase 提供的一个运维工具,主要提供了 dump sstable、dump clog、iobench 等功能,可以用于排查数据不一致、丢数据、数据错等正确性问题。本文展示使用 ob_admin 查看 clog 日志来定丢数据的问题。
ob_admin clog_tool 使用指南
下表列出了 log_tool 的常用命令。
| 命令行 | 说明 |
|---|---|
ob_admin clog_tool dump_ilog [ilog_files] |
将 ilog 文件中的内容全部打印出来 |
ob_admin clog_tool dump_all [log_files] |
将 clog 文件中的内容全部打印出来 |
ob_admin clog_tool dump_hex [log_files] |
将 clog 文件中的内容以 16 进制的格式打印出来 |
ob_admin clog_tool dump_format [log_files] |
将 clog 文件中的内容以格式化的形式打出来 |
ob_admin clog_tool dump_filter [filter_str] [log_files] |
将 ilog 文件中的按提供的 filter 信息过滤并打印出来 |
dump_ilog
用于打印 ilog 文件内容。
示例:
./ob_admin clog_tool dump_ilog 1
说明
dump_ilog 后面的数字为 ilog 文件的编号。
dump_all
将 clog 文件中的内容全部打印出来。
示例:
./ob_admin clog_tool dump_all 19999

说明
其中 $$$ 非 clog 本身内容,是 clog_tool 加在每条日志行首,便于查找每条日志首部。
dump_format
dump_format 会将日志解析一遍,分析出该日志的操作。
示例:
./ob_admin clog_tool dump_format 19999
返回结果如下:

如上图所示,dump_format 打印出来的结果比较规整,红色框部分是 trans_id, 黄色框表示 DML 类型,绿色框表示 table_id, 灰色框是主键,白色框是修改的具体内容,以 column_id: 数据内容的方式展现。
dump_hex
日志中很可能会有不可打印日志,dump_hex 和 dump_all 不同的地方在于将不可打印字符以 16 进制的方式展示出来。
其使用方法和 dump_all 一样。
dump ofs 上的 clog 文件
从 OceanBase 数据库 V3.0 版本之后,支持 dump ofs 上的 clog 文件,dump ofs 上的 clog 文件有两种方式:
指定完整的 ofs 目录路径:ofs_addr
./ob_admin clog_tool dump_filter 'table_id=1101710651083705' ofs_addr://xx.xx.xx.xx:/server_data/clog/{1..2}先将 clog 文件 dump 下来,之后将文件当做本地文件一样处理:
./ob_admin clog_tool dump_filter 'table_id=1101710651083705 {1..2}
案例:Update 的数据不见了?
应用反馈,update 了一条数据,但是实际库里没有更新。由于 sql audit 中的信息已经刷新,采用 ob_admin 直接分析 clog 日志来查看该表上的更新操作。
首先根据应用 update 的时间,确定 clog 文件号(1234)。
使用 ob_admin 对该 clog 文件进行解析,以 table_id 为过滤条件:
/home/admin/oceanbase/bin/ob_admin clog_tool dump_filter 'table_id=1100611139457011' 1234 > /tmp/tmp2.log使用主键值来搜索解析后的 clog 文件:
grep 755999 /tmp/tmp2.log返回结果如下:

通过解析 clog 方式进行确认当时的执行逻辑,在业务第一次 update 之后又做了一次 update,之前更新到了 17:02,后面又做了一次更新到了 17:01。经业务排查,确认是应用逻辑存在问题。