如何解压缩mongo日志文件

时间:2017-02-06 11:22:58

标签: python mongodb snappy journal

正如我所研究的,Mongodb创建的日志文件是使用snappy压缩算法压缩的。但我无法解压缩此压缩日志文件。它在尝试解压缩时出错

  

错误流缺少snappy标识符

我用来解压缩的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

请帮助我在此之后找不到我的方式

1 个答案:

答案 0 :(得分:1)

  

有两种形式的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/