数据库日志dump工具

sdbdpsdump 是 SequoiaDB 巨杉数据库的同步日志文件 dump 工具,该工具可以解析 replicalog 同步日志文件的内容,并且给出结果报告。

运行需求

  • sdbdpsdump 不需要与数据库连接。
  • 运行 sdbdpsdump 命令的用户必须对数据库的 replicalog 同步日志文件拥有读权限。

语法规则

  1. sdbdpsdump [--source | -s arg][--output | -o arg][ --type | -t arg]
  2. sdbdpsdump [--source | -s arg][--name | -n arg][--output | -o arg][ --type | -t arg]
  3. sdbdpsdump [--source | -s arg][--lsn | -l arg][--ahead | -a arg][--output | -o arg]
  4. sdbdpsdump [--source | -s arg][--meta | -m]
  5. sdbdpsdump [--source | -s arg][--last | -e arg]
  6. sdbdpsdump --help | -h
  7. sdbdpsdump --version | -v

参数说明

  • --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 数据

    • 18 表示LOB 数据 truncate

    • 21 表示修改集合/集合空间/域的属性

    • 22 表示添加集合/集合空间的 UniqueID

  • --name, -n

    指定集合空间或者集合名,只解析和指定名相关的集合或者集合空间的日志

  • --lsn, -l

    指定 LSN 值,只解析 LSN 的日志,可与 -a 和 -b 联用

  • --last, -e

    指定解析日志文件最后的 N 条日志,N 为指定的数值(需要 -s 指定到文件)

  • --source, -s

    指定日志文件的目录或路径,默认为当前目录

  • --output, -o

    指定输出文件,默认为屏幕输出

  • --ahead, -a

    指定解析指定 LSN 之前的 N 条日志,N 为指定数值,默认值为 20,必须与 -l 或 —lsn 联用

  • --back, -b

    指定解析指定 lsn 之后的 N 条日志,N 为指定数值,默认值为 20,必须与 -l 或 —lsn 联用

Note:

无论用户是否指定 —meta 选项,sdbdpsdump 都会打印日志文件的元数据信息。

示例

  • sdbdpsdump 解析指定目录 /opt/sequoiadb/database/data/11860/replicalog 中的 replicalog 文件,并只解析类型为 1(数据插入)的日志,输出到当前目录 out.log

    1. $ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/sequoiadbLog.0 -o out.log -t 1

    输出如下日志文件元数据信息,包括起始日志文件、结束日志文件、起始 LSN 、最后的日志 LSN、日志有效空间等:

    1. =======================================
    2. Log Files in total: 1
    3. LogFile begin : sequoiadbLog.0
    4. LogFile work : sequoiadbLog.0
    5. begin Lsn : 0x00000000
    6. current Lsn : 0x00000644
    7. expect Lsn : 0x00000710
    8. =======================================
    9. Log File Name: sequoiadbLog.0
    10. Logic ID : 0
    11. First LSN : 0x00000000
    12. Last LSN : 0x00000644
    13. Valid Size : 1808 bytes
    14. Rest Size : 67107056 bytes
    15. parse file : [/opt/sequoiadb/database/data/11860/replicalog/sequoiadbLog.0]
    16. 0x00007FFF40BC1290 : 5344 424C 4F47 4844 0000 0000 0000 0000 SDBLOGHD........
    17. 0x00007FFF40BC12A0 : 0100 0000 0000 0000 0000 0000 0100 0000 ................
    18. 0x00007FFF40BC12B0 : 0000 0004 0000 0000 1400 0000 0000 0000 ................
    19. 0x00007FFF40BC12C0 : 0000 0000 0000 0000 0000 0000 0000 0000 ................
    20. *
    21. Head : SDBLOGHD
    22. FirstLSN: 0x0000000000000000(0)
    23. LogID : 0
    24. 0x00000000019EE900 : 2001 0000 0000 0000 A400 0000 0000 0000 ...............
    25. 0x00000000019EE910 : 7000 0000 0100 0000 0100 0000 0000 0000 p...............
    26. 0x00000000019EE920 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    27. 0x00000000019EE930 : 6F79 6565 0001 3500 0000 3500 0000 075F oyee..5...5...._
    28. 0x00000000019EE940 : 6964 005C 9496 946E 6107 74AC 9A1C 6510 id.\...na.t...e.
    29. 0x00000000019EE950 : 6100 0000 0000 106E 6F00 0000 0000 0274 a......no......t
    30. 0x00000000019EE960 : 6573 7400 0600 0000 7465 7374 3000 0000 est.....test0...

    dump 解析数据插入的日志,记录日志版本、当前日志 LSN 、上一条日志 LSN 、日志长度 Length 、日志类型 Type 、集合空间名 FullName、插入记录等

    1. Version: 0x00000001(1)
    2. LSN : 0x0000000000000120(288)
    3. PreLSN : 0x00000000000000a4(164)
    4. Length : 112
    5. Type : INSERT(1)
    6. FullName : sample.employee
    7. Insert : { "_id": { "$oid": "5c9496946e610774ac9a1c65" }, "a": 0, "no": 0, "test": "test0" }
    8. 0x00000000019EE900 : 9001 0000 0000 0000 2001 0000 0000 0000 ........ .......
    9. 0x00000000019EE910 : 7000 0000 0100 0000 0100 0000 0000 0000 p...............
    10. 0x00000000019EE920 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    11. 0x00000000019EE930 : 6F79 6565 0001 3500 0000 3500 0000 075F oyee..5...5...._
    12. 0x00000000019EE940 : 6964 005C 9496 946E 6107 74AC 9A1C 6610 id.\...na.t...f.
    13. 0x00000000019EE950 : 6100 0100 0000 106E 6F00 0100 0000 0274 a......no......t
    14. 0x00000000019EE960 : 6573 7400 0600 0000 7465 7374 3100 0000 est.....test1...
  • 指定日志文件目录 /opt/sequoiadb/database/data/11860/replicalog/,指定只解析类型为 2(数据更新)的日志,输出到当前目录 update.log

    1. $ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -o update.log -t 2

    dump 解析数据更新的日志,记录日志版本、当前日志 LSN 、上一条日志 LSN 、日志长度 Length 、日志类型 Type 、集合空间名 FullName、更新记录等

    1. Version: 0x00000001(1)
    2. LSN : 0x0000000000000580(1408)
    3. PreLSN : 0x0000000000000510(1296)
    4. Length : 196
    5. Type : UPDATE(2)
    6. FullName : sample.employee
    7. Orig id : { "_id": { "$oid": "5c9496946e610774ac9a1c67" } }
    8. Orig : { "$unset": { "b": "" } }
    9. New id : { "_id": { "$oid": "5c9496946e610774ac9a1c67" } }
    10. New : { "$set": { "b": "testupdate" } }
    11. Old ShardingKey: { "a": 2 }
    12. 0x0000000001A73B90 : 4406 0000 0000 0000 8005 0000 0000 0000 D...............
    13. 0x0000000001A73BA0 : CC00 0000 0100 0000 0200 0000 0000 0000 ................
    14. 0x0000000001A73BB0 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    15. 0x0000000001A73BC0 : 6F79 6565 0001 1600 0000 1600 0000 075F oyee..........._
    16. 0x0000000001A73BD0 : 6964 005C 9496 946E 6107 74AC 9A1C 6800 id.\...na.t...h.
    17. 0x0000000001A73BE0 : 0220 0000 0020 0000 0003 2473 6574 0015 . ... ....$set..
    18. 0x0000000001A73BF0 : 0000 0002 7465 7374 0006 0000 0074 6573 ....test.....tes
    19. 0x0000000001A73C00 : 7433 0000 0003 1600 0000 1600 0000 075F t3............._
    20. 0x0000000001A73C10 : 6964 005C 9496 946E 6107 74AC 9A1C 6800 id.\...na.t...h.
    21. 0x0000000001A73C20 : 0425 0000 0025 0000 0003 2473 6574 001A .%...%....$set..
    22. 0x0000000001A73C30 : 0000 0002 7465 7374 000B 0000 0074 6573 ....test.....tes
    23. 0x0000000001A73C40 : 7475 7064 6174 6500 0000 050C 0000 000C tupdate.........
    24. 0x0000000001A73C50 : 0000 0010 6100 0300 0000 0000 ....a.......
  • 指定日志文件目录 /opt/sequoiadb/database/data/11860/replicalog/,解析指定集合 sample.employee 中所有操作类型日志,输出到当前目录 out.log

    1. $ sdbdpsdump -s /opt/sequoiadb/database/data/11860/replicalog/ -o out.log -n sample.employee

    集合 sample.employee 中执行插入、更新、删除数据、创建索引等操作,dump 解析该集合日志内容如下,包括数据插入、更新、删除、创建索引等

    1. Version: 0x00000018(24)
    2. LSN : 0x00000010b305055c(71722927452)
    3. PreLSN : 0x00000010b3050504(71722927364)
    4. Length : 88
    5. Type : INSERT(1)
    6. FullName : sample.employee
    7. Insert : { "_id": { "$oid": "5cc69c950fb91f653845a92d" }, "a": 9 }
    8. 0x0000000000CCA7E0 : B405 05B3 1000 0000 5C05 05B3 1000 0000 ........\.......
    9. 0x0000000000CCA7F0 : 5800 0000 1800 0000 0300 0000 0000 0000 X...............
    10. 0x0000000000CCA800 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    11. 0x0000000000CCA810 : 6F79 6565 0001 1D00 0000 1D00 0000 075F oyee..........._
    12. 0x0000000000CCA820 : 6964 005C C69C 950F B91F 6538 45A9 2610 id.\......e8E.&.
    13. 0x0000000000CCA830 : 6100 0200 0000 0000 a.......
    14. Version: 0x00000018(24)
    15. LSN : 0x00000010b30505b4(71722927540)
    16. PreLSN : 0x00000010b305055c(71722927452)
    17. Length : 88
    18. Type : DELETE(3)
    19. CLName : sample.employee
    20. Orig : { "_id": { "$oid": "5cc69c950fb91f653845a926" }, "a": 2 }
    21. 0x0000000000CCA7E0 : 0C06 05B3 1000 0000 B405 05B3 1000 0000 ................
    22. 0x0000000000CCA7F0 : AC00 0000 1800 0000 0200 0000 0000 0000 ................
    23. 0x0000000000CCA800 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    24. 0x0000000000CCA810 : 6F79 6565 0001 1600 0000 1600 0000 075F oyee..........._
    25. 0x0000000000CCA820 : 6964 005C C69C 950F B91F 6538 45A9 2500 id.\......e8E.%.
    26. 0x0000000000CCA830 : 021A 0000 001A 0000 0003 2475 6E73 6574 ..........$unset
    27. 0x0000000000CCA840 : 000D 0000 0002 6300 0100 0000 0000 0003 ......c.........
    28. 0x0000000000CCA850 : 1600 0000 1600 0000 075F 6964 005C C69C ........._id.\..
    29. 0x0000000000CCA860 : 950F B91F 6538 45A9 2500 041C 0000 001C ....e8E.%.......
    30. 0x0000000000CCA870 : 0000 0003 2473 6574 0011 0000 0002 6300 ....$set......c.
    31. 0x0000000000CCA880 : 0500 0000 7465 7374 0000 0000 ....test....
    32. Version: 0x00000018(24)
    33. LSN : 0x00000010b305060c(71722927628)
    34. PreLSN : 0x00000010b30505b4(71722927540)
    35. Length : 172
    36. Type : UPDATE(2)
    37. FullName : sample.employee
    38. Orig id : { "_id": { "$oid": "5cc69c950fb91f653845a925" } }
    39. Orig : { "$unset": { "c": "" } }
    40. New id : { "_id": { "$oid": "5cc69c950fb91f653845a925" } }
    41. New : { "$set": { "c": "test" } }
    42. 0x0000000000CCA7E0 : B806 05B3 1000 0000 0C06 05B3 1000 0000 ................
    43. 0x0000000000CCA7F0 : 8C00 0000 1800 0000 0800 0000 0000 0000 ................
    44. 0x0000000000CCA800 : C910 0000 0073 616D 706C 652E 656D 706C .....sample.empl
    45. 0x0000000000CCA810 : 6F79 6565 0001 4F00 0000 4F00 0000 075F oyee..O...O...._
    46. 0x0000000000CCA820 : 6964 005C C69C CDEB A8A8 886D F90D 6E03 id.\.......m..n.
    47. 0x0000000000CCA830 : 6B65 7900 0C00 0000 1061 0001 0000 0000 key......a......
    48. 0x0000000000CCA840 : 026E 616D 6500 0A00 0000 7465 7374 696E .name.....testin
    49. 0x0000000000CCA850 : 6465 7800 0875 6E69 7175 6500 0008 656E dex..unique...en
    50. 0x0000000000CCA860 : 666F 7263 6564 0000 0000 0000 forced......
    51. Version: 0x00000018(24)
    52. LSN : 0x00000010b30506b8(71722927800)
    53. PreLSN : 0x00000010b305060c(71722927628)
    54. Length : 140
    55. Type : IX CREATE(8)
    56. CLName : sample.employee
    57. IXDef : { "_id": { "$oid": "5cc69ccdeba8a8886df90d6e" }, "key": { "a": 1 }, "name": "testindex", "unique": false, "enforced": false }