我们可以将一个RocksDB中的sst文件摄取到另一个RocksDB吗?

时间:2018-02-24 02:50:09

标签: rocksdb

我在RocksDB API中找到ingestExternalFile()。但是当我尝试将一个RocksDB中的sst文件摄取到另一个RocksDB时,它给了我一个例外:

Exception in thread "main" org.rocksdb.RocksDBException: External file version not found
    at org.rocksdb.RocksDB.ingestExternalFile(Native Method)
    at org.rocksdb.RocksDB.ingestExternalFile(RocksDB.java:2142)

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

不,你不能。

当您尝试这样做时,文件版本,CF ID和序列号将不匹配。通常,要摄取的SST是使用SSTFileWriter创建的。编写器将SST和global sequence number中所有行的SEQUENCE ID设置为0。摄取此SST文件时,db在摄取后为该文件分配合适的全局序列号。 将SST从数据库吸收到数据库时,这将引起问题。 在将来的版本中,可能会将压缩的SST文件从一个岩石实例导入另一个岩石实例。