sdbdpsdump 是 SequoiaDB 巨杉数据库的同步日志解析工具,用于解析目录 replicalog
下的同步日志内容。当集群数据存在异常时,可使用该工具进行数据分析。
sdbdpsdump [--source | -s arg] [--output | -o arg] [ --type | -t arg] [--name | -n arg] [--lsn | -l arg] [--ahead | -a arg] [--meta | -m] [--last | -e arg] [--back | -b arg] [--transaction arg]
参数名 | 缩写 | 描述 |
---|---|---|
--help | -h | 获取帮助信息 |
--version | -v | 获取版本信息 |
--meta | -m | 解析日志文件的元数据信息 |
--type | -t | 指定按操作类型解析日志文件,支持指定的类型如下: ● 1:数据插入 ● 2:数据更新 ● 3:数据删除 ● 4:创建集合空间 ● 5:删除集合空间 ● 6:创建集合 ● 7:删除集合 ● 8:创建索引 ● 9:删除索引 ● 10:集合重命名 ● 11:集合 truncate ● 12:事务提交 ● 13:事务回滚 ● 14:清空 Catalog 缓存 ● 15:写入 LOB 数据 ● 16:删除 LOB 数据 ● 17:修改 LOB 数据 ● 21:修改集合/集合空间的属性 ● 22:添加集合/集合空间的 UniqueID |
--name | -n | 指定集合空间或者集合名,表示仅解析与该集合空间或者集合相关的日志 |
--lsn | -l | 指定 LSN,表示仅解析与该 LSN 对应的日志 该参数可搭配 --ahead 和 --back 使用 |
--last | -e | 指定解析日志文件最后 N 条日志,N 为待指定的参数值 使用该参数时,需保证参数 --source 的值为具体的日志文件 |
--transaction | - | 指定事务 ID,表示仅解析与该事务 ID 对应的日志 事务 ID 需按 16 进制格式指定,例如 --transaction 0x000400667d033b |
--source | -s | 指定日志文件所在目录或路径,不指定该参数时默认为当前目录 |
--output | -o | 指定输出文件,不指定该参数时默认为屏幕输出 |
--ahead | -a | 指定解析 LSN 之前的 N 条日志,N 为待指定的参数值,默认值为 20 该参数必须与 --lsn 配合使用 |
--back | -b | 指定解析 LSN 之后的 N 条日志,N 为待指定的参数值,默认值为 20 该参数必须与 --lsn 配合使用 |
解析日志文件的元数据信息,并将结果输出至文件 meta.log
$ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -m -o meta.log
文件的元数据信息如下,用户可通过该信息了解各个文件对应数据的范围:
======================================= Log Files in total: 20 LogFile begin : sequoiadbLog.0 LogFile work : sequoiadbLog.0 Begin Lsn : 0x00000000 Current Lsn : 0x00000644 Expect Lsn : 0x00000710 ======================================= Log File Name: sequoiadbLog.0 Logic ID : 0 First LSN : 0x00000000 Last LSN : 0x00000644 Valid Size : 1808 bytes Rest Size : 67107056 bytes ...
上述字段说明如下:
字段名 | 描述 |
---|---|
LogFile begin | 起始日志文件 |
LogFile work | 结束日志文件 |
Frist LSN | 第一条日志对应的 LSN |
Last LSN | 最后一条日志对应的 LSN |
Valid Size | 日志已用空间 |
Rest Size | 日志空闲空间 |
解析数据插入类型的日志,并将结果输出至文件 out.log
$ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -o out.log -t 1
文件记录的数据信息如下,用户可通过该信息了解数据对应的文件:
Version: 0x00000001(1) LSN : 0x0000000000000140(320) PreLSN : 0x0000000000000050(80) Length : 104 Flags : 0x0000() Type : INSERT(1) FullName : sample.employee Insert : { "_id": { "$oid": "645c8054cc434dc594399897" }, "name": "Tom", "age": 20 } ...
上述字段说明如下:
字段名 | 描述 |
---|---|
Version | 节点切主版本号,当节点升主时递增 |
LSN | 当前日志对应的 LSN |
PreLSN | 上一条日志对应的 LSN |
Length | 当前日志的长度 |
Flags | 插入数据时执行的 flag |
Type | 当前日志对应的操作类型 |
FullName | 集合空间 |
Insert | 所插入集合的数据信息 |
解析创建索引类型的日志,并将结果输出至文件 index.log
$ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -o index.log -t 8
文件记录的数据信息如下:
Version: 0x00000001(1) LSN : 0x0000000000000210(528) PreLSN : 0x00000000000001a8(424) Length : 204 Flags : 0x0000() Type : IX CREATE(8) CLName : sample.employee IXDef : { "_id": { "$oid": "645c83aafc8d8efc581c0850" }, "UniqueID": 4294967297, "key": { "age": 1 }, "name":"ageIndex", "unique": true, "enforced": false } Option : { "SortBufferSize": 64, "TaskID": 1 } ...
上述字段说明如下:
字段名 | 描述 |
---|---|
Version | 节点切主版本号,当节点升主时递增 |
LSN | 当前日志对应的 LSN |
PreLSN | 上一条日志对应的 LSN |
Length | 当前日志的长度 |
Type | 当前日志对应的操作类型 |
CLName | 集合空间 |
IXDef | 索引的定义 |
Option | 索引控制参数 |
解析事务提交类型的日志,并将结果输出至文件 transaction.log
$ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -o transaction.log -t 12
文件记录的数据信息如下:
Version: 0x00000001(1) LSN : 0x0000000000000b04(2820) PreLSN : 0x0000000000000a88(2696) Length : 100 Flags : 0x0000() Type : COMMIT(12) FirstLSN : 0x0000000000000a88 Attr : 1(Pre-Commit) NodeNum : 1 Nodes : [ (1000,1000) ] TransID : 0x0002001dc93091 IDAttr : TransPreLSN : 0x0000000000000a88 ...
上述字段说明如下:
字段名 | 描述 |
---|---|
Version | 节点切主版本号,当节点升主时递增 |
LSN | 当前日志对应的 LSN |
PreLSN | 上一条日志对应的 LSN |
Length | 当前日志的长度 |
Type | 当前日志对应的操作类型 |
FirstLSN | 该事务第一条日志对应的 LSN |
Attr | 执行的操作 |
NodeNum | 运行该事务的节点数量 |
Nodes | 运行该事务的节点 ID |
TransID | 事务 ID |
TransPreLSN | 上一条事务日志对应的 LSN |