RocksDB工具命令 #
一、工具概述 #
1.1 RocksDB命令行工具 #
text
RocksDB提供的工具:
├── ldb - 数据库操作工具
├── sst_dump - SST文件分析工具
├── blob_dump - Blob文件分析工具
├── write_stress - 写入压力测试工具
└── db_bench - 性能基准测试工具
1.2 工具位置 #
bash
# 编译后工具位置
cd rocksdb/build
# 主要工具
./ldb # 数据库操作
./sst_dump # SST分析
./db_bench # 性能测试
二、ldb工具 #
2.1 基本命令 #
bash
# 查看帮助
ldb --help
# 查看数据库内容
ldb dump --db=/path/to/db
# 查看指定范围
ldb dump --db=/path/to/db --from=key1 --to=key9
# 查看键值数量
ldb dump --db=/path/to/db --count_only
2.2 数据查询 #
bash
# 查询单个键
ldb get --db=/path/to/db key1
# 批量查询
ldb multi_get --db=/path/to/db key1 key2 key3
# 查询列族
ldb get --db=/path/to/db --column_family=cf1 key1
# 使用快照查询
ldb get --db=/path/to/db --snapshot key1
2.3 数据写入 #
bash
# 写入单个键值
ldb put --db=/path/to/db key1 value1
# 批量写入
ldb batchput --db=/path/to/db key1 value1 key2 value2
# 删除键
ldb delete --db=/path/to/db key1
# 写入指定列族
ldb put --db=/path/to/db --column_family=cf1 key1 value1
2.4 数据库管理 #
bash
# 列出列族
ldb list_column_families --db=/path/to/db
# 查看SST文件列表
ldb list_file_nums --db=/path/to/db
# 执行Compaction
ldb compact --db=/path/to/db
# 指定范围Compaction
ldb compact --db=/path/to/db --from=key1 --to=key9
# Flush MemTable
ldb flush --db=/path/to/db
2.5 备份恢复 #
bash
# 创建备份
ldb backup --db=/path/to/db --backup_dir=/path/to/backup
# 恢复备份
ldb restore --db=/path/to/db --backup_dir=/path/to/backup
# 列出备份
ldb backup --db=/path/to/db --backup_dir=/path/to/backup --list
2.6 检查点 #
bash
# 创建检查点
ldb checkpoint --db=/path/to/db --checkpoint_dir=/path/to/checkpoint
三、sst_dump工具 #
3.1 基本命令 #
bash
# 查看帮助
sst_dump --help
# 查看SST文件信息
sst_dump --file=/path/to/file.sst
# 查看详细统计
sst_dump --file=/path/to/file.sst --command=stats
# 扫描文件内容
sst_dump --file=/path/to/file.sst --command=scan
# 验证文件
sst_dump --file=/path/to/file.sst --command=verify
3.2 文件分析 #
bash
# 查看所有SST文件
sst_dump --file=/path/to/db/*.sst --command=stats
# 查看特定文件
sst_dump --file=/path/to/db/000123.sst --command=scan
# 输出格式化
sst_dump --file=/path/to/file.sst --command=scan --output_format=escaped
# 显示Block信息
sst_dump --file=/path/to/file.sst --show_properties
3.3 文件属性 #
bash
# 查看文件属性
sst_dump --file=/path/to/file.sst --show_properties
# 输出示例:
# File size: 67108864
# Data blocks: 1024
# Entries: 1000000
# Filter policy name: rocksdb.BloomFilter.10
# Compression: LZ4
3.4 范围查询 #
bash
# 查看指定范围
sst_dump --file=/path/to/file.sst --command=scan \
--from=key1 --to=key9
# 只显示键
sst_dump --file=/path/to/file.sst --command=scan --output_key_only
# 只显示值
sst_dump --file=/path/to/file.sst --command=scan --output_value_only
四、db_bench工具 #
4.1 基准测试 #
bash
# 查看帮助
db_bench --help
# 顺序写入测试
db_bench --benchmarks=fillseq --db=/path/to/db --num=1000000
# 随机写入测试
db_bench --benchmarks=fillrandom --db=/path/to/db --num=1000000
# 顺序读取测试
db_bench --benchmarks=readseq --db=/path/to/db --num=1000000
# 随机读取测试
db_bench --benchmarks=readrandom --db=/path/to/db --num=1000000
4.2 测试类型 #
bash
# 写入测试
fillseq # 顺序写入
fillrandom # 随机写入
filluniquerandom # 唯一随机写入
# 读取测试
readseq # 顺序读取
readrandom # 随机读取
readwhilewriting # 写入时读取
# 删除测试
deleteseq # 顺序删除
deleterandom # 随机删除
# 混合测试
readrandomwriterandom # 随机读写混合
4.3 测试参数 #
bash
# 设置数据量
db_bench --benchmarks=fillrandom --num=10000000
# 设置值大小
db_bench --benchmarks=fillrandom --value_size=1024
# 设置线程数
db_bench --benchmarks=fillrandom --threads=16
# 设置压缩
db_bench --benchmarks=fillrandom --compression_type=lz4
# 设置Block Cache
db_bench --benchmarks=readrandom --cache_size=1073741824
# 设置MemTable大小
db_bench --benchmarks=fillrandom --write_buffer_size=67108864
4.4 性能测试示例 #
bash
# 完整性能测试
db_bench \
--db=/tmp/rocksdb_bench \
--benchmarks=fillseq,fillrandom,readseq,readrandom \
--num=1000000 \
--value_size=1024 \
--threads=8 \
--compression_type=lz4 \
--cache_size=1073741824
# 输出示例:
# fillseq : 1.234 micros/op 810000 ops/sec
# fillrandom : 2.345 micros/op 426000 ops/sec
# readseq : 0.456 micros/op 2190000 ops/sec
# readrandom : 3.456 micros/op 289000 ops/sec
五、其他工具 #
5.1 blob_dump #
bash
# 查看BlobDB文件
blob_dump --file=/path/to/blob_file
# 显示统计信息
blob_dump --file=/path/to/blob_file --show_blob
5.2 write_stress #
bash
# 写入压力测试
write_stress --db=/path/to/db --duration=3600
# 参数说明
--threads=N # 线程数
--duration=N # 持续时间(秒)
--value_size=N # 值大小
六、实用脚本 #
6.1 数据导出脚本 #
bash
#!/bin/bash
# export_rocksdb.sh
DB_PATH=$1
OUTPUT_FILE=$2
if [ -z "$DB_PATH" ] || [ -z "$OUTPUT_FILE" ]; then
echo "Usage: $0 <db_path> <output_file>"
exit 1
fi
ldb dump --db=$DB_PATH > $OUTPUT_FILE
echo "Data exported to $OUTPUT_FILE"
6.2 数据导入脚本 #
bash
#!/bin/bash
# import_rocksdb.sh
DB_PATH=$1
INPUT_FILE=$2
if [ -z "$DB_PATH" ] || [ -z "$INPUT_FILE" ]; then
echo "Usage: $0 <db_path> <input_file>"
exit 1
fi
while IFS=$'\t' read -r key value; do
ldb put --db=$DB_PATH "$key" "$value"
done < $INPUT_FILE
echo "Data imported from $INPUT_FILE"
6.3 健康检查脚本 #
bash
#!/bin/bash
# health_check.sh
DB_PATH=$1
if [ -z "$DB_PATH" ]; then
echo "Usage: $0 <db_path>"
exit 1
fi
echo "=== RocksDB Health Check ==="
echo "Database: $DB_PATH"
echo ""
# 检查SST文件数量
echo "SST Files per Level:"
for i in {0..6}; do
count=$(ls $DB_PATH/*$i.sst 2>/dev/null | wc -l)
echo " Level $i: $count files"
done
# 检查WAL文件
echo ""
echo "WAL Files:"
ls -lh $DB_PATH/*.log 2>/dev/null | head -5
# 检查MANIFEST
echo ""
echo "MANIFEST:"
ls -lh $DB_PATH/MANIFEST* 2>/dev/null
# 检查LOCK
echo ""
echo "LOCK File:"
ls -lh $DB_PATH/LOCK 2>/dev/null
echo ""
echo "=== Health Check Complete ==="
七、工具使用场景 #
7.1 日常运维 #
| 场景 | 工具 | 命令 |
|---|---|---|
| 查看数据 | ldb | ldb dump |
| 手动Compaction | ldb | ldb compact |
| 性能测试 | db_bench | db_bench --benchmarks=… |
| 文件分析 | sst_dump | sst_dump --command=stats |
7.2 问题诊断 #
| 问题 | 工具 | 命令 |
|---|---|---|
| 数据不一致 | ldb | ldb dump, ldb get |
| 文件损坏 | sst_dump | sst_dump --command=verify |
| 性能问题 | db_bench | db_bench --benchmarks=… |
| 空间问题 | sst_dump | sst_dump --show_properties |
八、最佳实践 #
8.1 工具使用建议 #
- 备份数据:操作前先备份
- 测试环境:先在测试环境验证
- 监控影响:注意对生产的影响
- 记录操作:记录所有操作命令
- 定期检查:定期运行健康检查
8.2 常用命令速查 #
bash
# 查看数据库内容
ldb dump --db=/path/to/db
# 执行Compaction
ldb compact --db=/path/to/db
# 性能测试
db_bench --benchmarks=fillrandom,readrandom --num=1000000
# SST文件分析
sst_dump --file=/path/to/file.sst --command=stats
# 创建备份
ldb backup --db=/path/to/db --backup_dir=/path/to/backup
九、总结 #
9.1 工具清单 #
| 工具 | 用途 |
|---|---|
| ldb | 数据库操作 |
| sst_dump | SST分析 |
| db_bench | 性能测试 |
| blob_dump | Blob分析 |
| write_stress | 压力测试 |
9.2 关键要点 #
- ldb工具:日常数据库操作
- sst_dump:SST文件分析
- db_bench:性能基准测试
- 脚本化:常用操作脚本化
- 安全操作:操作前备份
下一步,让我们学习故障排查!
最后更新:2026-03-27