Ldb /SST dump tool工具

LDB Tool
Introduction
ldb命令行工具提供多种数据访问和数据库管理命令。下面列出了一些样例。如果需要更多帮助信息,请直接不带参数运行ldb工具,或者运行tools/ldb_test.py内的单元测试。
How to Use
如果想要使用ldb工具,可以阅读INSTALL.md并执行如下命令:

make ldb

Examples
数据访问样例:
向数据库中添加(a1,b1),ok表示添加成功,其中create_if_missing如果存在则打开,不存在则创建

$./ldb --db=/tmp/test_db --create_if_missing put a1 b1
OK 

在数据库中查询key=a1的value,结果是b1

$ ./ldb --db=/tmp/test_db get a1
b1

在数据库中查询key=a2的value,结果是b2

   $ ./ldb --db=/tmp/test_db get a2
   Failed: NotFound:

扫描整个数据库,将所有键值对打印出来

   $ ./ldb --db=/tmp/test_db scan
    a1 : b1

扫描整个数据库,将所有键值对打印出来,hex表示十六进制

$ ./ldb --db=/tmp/test_db scan --hex
0x6131 : 0x6231

向数据库中添加(a2,b2),在这里a2用的是十六进制表示

$ ./ldb --db=/tmp/test_db put --key_hex 0x6132 b2
OK

扫描整个数据库,将所有键值对打印出来

$ ./ldb --db=/tmp/test_db scan
a1 : b1
a2 : b2

在数据库中查询key=a2的value,value结果用十六进制表示

$ ./ldb --db=/tmp/test_db get --value_hex a2
   0x6232

在数据库中查询key=a2的value,不过key的输入用十六进制表示

$ ./ldb --db=/tmp/test_db get --hex 0x6131
0x6231

向数据库中批量添加(a3,b3),(a4,b4)

 $ ./ldb --db=/tmp/test_db batchput a3 b3 a4 b4
   OK

扫描整个数据库,将所有键值对打印出来

 $ ./ldb --db=/tmp/test_db scan
   a1 : b1
   a2 : b2
   a3 : b3
   a4 : b4

向数据库中添加(“multiple words key”,“multiple words value”)

  $ ./ldb --db=/tmp/test_db batchput "multiple words key" "multiple words value"
   OK

扫描整个数据库,将所有键值对打印出来

   $ ./ldb --db=/tmp/test_db scan
   Created bg thread 0x7f4a1dbff700
   a1 : b1
   a2 : b2
   a3 : b3
   a4 : b4

multiple words key : multiple words value
以十六进制导出已经存在的rocksdb库:

$ ./ldb --db=/tmp/test_db dump --hex > /tmp/dbdump

加载十六进制格式的数据进新的rocksdb库

$ cat /tmp/dbdump | ./ldb --db=/tmp/test_db_new load --hex --compression_type=bzip2 --block_size=65536 --create_if_missing --disable_wal

压缩一个已经存在的rocksdb库

$ ./ldb --db=/tmp/test_db_new compact --compression_type=bzip2 --block_size=65536

你可以通过–column_family=来指定你要查询的column family。
–try_load_options 将会尝试加载配置文件来打开数据库。如果你总是要用这个配置去打开数据库,这是一个好方法。如果你使用默认配置打开数据库,它可能破坏LSM-Tree结构并导致无法自动回复。
Open as secondary
默认情况下,ldb 只能用于脱机数据库。操作数据库,即使是只读操作,也可能会更改数据库目录,例如信息日志。而选项 --secondary_path=<secondary_path> 会将数据库作为辅助实例打开,可用于打开正在运行的数据库和最大程度地减少对数据库目录的影响。此参数可用于任何 ldb 命令,但由于并非所有操作都可以针对辅助实例执行,因此某些操作可能会失败。除了写入操作肯定会在辅助实例中失败之外,某些读取操作也可能失败。

SST Dump Tool
Introduction
sst_dump工具可用于转存数据,查看分析具体的SST 文件。sst_dump可以对 SST 文件执行多种操作。
How to Use
如果想要使用ldb工具,可以阅读INSTALL.md并执行如下命令:

make sst_dump

Example

$ ./sst_dump
file or directory must be specified.
sst_dump --file=<data_dir_OR_sst_file> [–command=check|scan|raw]
–file=<data_dir_OR_sst_file>
Path to SST file or directory containing SST files

--command=check|scan|raw|verify
    check: Iterate over entries in files but dont print anything except if an error is encounterd (default command)
    scan: Iterate over entries in files and print them to screen
    raw: Dump all the table contents to <file_name>_dump.txt
    verify: Iterate all the blocks in files verifying checksum to detect possible coruption but dont print anything except if a corruption is encountered
    recompress: reports the SST file size if recompressed with different
                compression types

--output_hex
  Can be combined with scan command to print the keys and values in Hex

--from=<user_key>
  Key to start reading from when executing check|scan

--to=<user_key>
  Key to stop reading at when executing check|scan

--prefix=<user_key>
  Returns all keys with this prefix when executing check|scan
  Cannot be used in conjunction with --from

--read_num=<num>
  Maximum number of entries to read when executing check|scan

--verify_checksum
  Verify file checksum when executing check|scan

--input_key_hex
  Can be combined with --from and --to to indicate that these values are encoded in Hex

--show_properties
  Print table properties after iterating over the file when executing
  check|scan|raw

--set_block_size=<block_size>
  Can be combined with --command=recompress to set the block size that will
  be used when trying different compression algorithms

--compression_types=<comma-separated list of CompressionType members, e.g.,
  kSnappyCompression>
  Can be combined with --command=recompress to run recompression for this
  list of compression types

--parse_internal_key=<0xKEY>
  Convenience option to parse an internal key on the command line. Dumps the
  internal key in hex format {
    
    'key' @ SN: type}

Dumping SST file blocks

./sst_dump --file=/path/to/sst/000829.sst --command=raw

此命令将生成一个名为 /path/to/sst/000829_dump.txt 的 txt 文件。此文件将包含所有索引块和以十六进制编码的数据块。它还将包含表属性、页脚详细信息和元索引详细信息等信息。
Printing entries in SST file

./sst_dump --file=/path/to/sst/000829.sst --command=scan --read_num=5

此命令会将SST文件中前五个键值对打印在屏幕上,输出目录可能如下:

'Key1' @ 5: 1 => Value1
'Key2' @ 2: 1 => Value2
'Key3' @ 4: 1 => Value3
'Key4' @ 3: 1 => Value4
'Key5' @ 1: 1 => Value5

输出的格式概括总结如下:

'<key>' @ <sequence number>: <type> => <value>

注意如果key值中包含非ASCII码字符的话,屏幕无法显示,在这种情况下最好使用–output_hex

./sst_dump --file=/path/to/sst/000829.sst --command=scan --read_num=5 --output_hex

也可以设置读操作的起始和结束为止

./sst_dump --file=/path/to/sst/000829.sst --command=scan --from="key2" --to="key4"

也可以用16进制来传递from to(也就是起始位置的)参数

./sst_dump --file=/path/to/sst/000829.sst --command=scan --from="0x6B657932" --to="0x6B657934" --input_key_hex

检查SST文件

./sst_dump --file=/path/to/sst/000829.sst --command=check --verify_checksum

这个命令会遍历SST file的所有entry,但是不会打印任何信息除非发现了SST file存在问题。这个命令操作也会校验checksum。
打印SST file的属性:

./sst_dump --file=/path/to/sst/000829.sst --show_properties

这个命令会读SST file文件的property,并打印,输出如下:

from [] to []
Process /path/to/sst/000829.sst
Sst file format: block-based

Table Properties:

  # data blocks: 26541
  # entries: 2283572
  raw key size: 264639191
  raw average key size: 115.888262
  raw value size: 26378342
  raw average value size: 11.551351
  data block size: 67110160
  index block size: 3620969
  filter block size: 0
  (estimated) table size: 70731129
  filter policy name: N/A
  # deleted keys: 571272

Trying different compression algorithms
SST_dump可以用来在不同的压缩算法下check 文件的size

./sst_dump --file=/path/to/sst/000829.sst --show_compression_sizes

使用–show_compression_sizes参数 sst_dump会在内存中重建SST file,可以使用不同的压缩算法,然后report file size,输出如下:

from [] to []
Process /path/to/sst/000829.sst
Sst file format: block-based
Block Size: 16384
Compression: kNoCompression Size: 103974700
Compression: kSnappyCompression Size: 103906223
Compression: kZlibCompression Size: 80602892
Compression: kBZip2Compression Size: 76250777
Compression: kLZ4Compression Size: 103905572
Compression: kLZ4HCCompression Size: 97234828
Compression: kZSTDNotFinalCompression Size: 79821573

猜你喜欢

转载自blog.csdn.net/qq_44421796/article/details/128793337
sst