正如我所探索的,Mongodb创建的日志文件是使用活泼的压缩算法压缩的。 但我无法解压缩此压缩日志文件。它在尝试解压缩时出错
错误流缺少活泼标识符
我用来解压的python代码如下:
import collections
import bson
from bson.codec_options import CodecOptions
import snappy
from cStringIO import StringIO
try:
with open('journal/WiredTigerLog.0000000011') as f:
content = f.readlines()
fh = StringIO()
snappy.stream_decompress(StringIO("".join(content)),fh)
print fh
except Exception,e:
print str(e)
pass
请帮忙,我无法在此之后走
Snappy压缩有两种形式,基本形式和 流式处理形式。基本形式有一个限制,它必须适合 在内存中,因此存在流式处理表单以便能够压缩更大的 数据量。流格式有一个标题,然后是子范围 被压缩。如果缺少标题,听起来可能 您使用基本表单进行压缩并尝试使用 流式处理窗体。 https://github.com/andrix/python-snappy/issues/40
如果是这种情况,请使用 decompress
而不是 stream_decompress
。
但如果数据根本没有压缩:
with open('journal/WiredTigerLog.0000000011') as f:
for line in f:
print line
可以工作。
WiredTiger 的最小日志记录大小为 128 字节。如果日志记录为 128 字节或更小,WiredTiger 不会压缩该记录。 https://docs.mongodb.com/manual/core/journaling/