Arangodump错过了一些数据

时间:2018-11-21 15:35:46

标签: arangodb

我正在使用arangodb 3.1.25。我发现使用'arangodump'执行该命令后,转储目录中缺少一些数据:

arangodump --server.endpoint tcp://address:port --server.database DbName --dump-data true --server.password=**** --include-system-collections true --output-directory "dump" -overwrite true

丢失的数据示例:

在原始数据库上(我叫它为“ test”),我在“ interchange_edges”集合中有这样的文档:

{"_from":"interchange_headers/66430","_to":"parts/64020","type":"interchange"}

{"_from":"interchange_headers/66430","_to":"parts/44474","type":"interchange"}

{"_from":"interchange_headers/66430","_to":"parts/48761","type":"interchange"}

然后我使用上面列出的指令执行转储,然后为我的集合打开一个包含转储数据的文件。在我的情况下,其名称为interchange_edges_7d8fd33864b65edab6a05b838483239b.data.json。然后,我通过子字符串“ 66430”在此文件中搜索,因为所有原始记录都具有该子字符串。结果我发现了这样的匹配项:

{"type":2300,"data":{"_from":"interchange_headers/66430","_id":"interchange_edges/66430_64020","_key":"66430_64020","_rev":"_V8MSKAS--C","_to":"parts/64020","type":"interchange"}}

{"type":2300,"data":{"_from":"interchange_headers/66430","_id":"interchange_edges/66430_64020","_key":"66430_64020","_rev":"_V8MSKAS--C","_to":"parts/64020","type":"interchange"}}

{"type":2300,"data":{"_from":"interchange_headers/66430","_id":"interchange_edges/66430_64020","_key":"66430_64020","_rev":"_V8MSKAS--C","_to":"parts/64020","type":"interchange"}}

以某种方式,我有3个(重复的?)行,而不是预期的3个不同的行。

什么可能导致此行为?我错过了重要的事情吗?

有关环境的一些信息: arangosh(ArangoDB 3.1.25 [linux] 64位,使用VPack 0.1.30,ICU 54.1,V8 5.0.71.39,OpenSSL 1.0.1f 2014年1月6日)

1 个答案:

答案 0 :(得分:0)

请注意ArangoDB 3.1 is end of life已有一段时间。

下面描述的问题是特定于MMFiles-Storageengine的。

在转储开始时,ArangoDump将调用wal集合刷新机制。

这会将WAL文件中的所有文档收集到其特定的数据文件中。在等待服务器完成一段时间后,ArangoDump将开始从服务器绘制收集文件。

尚未从wAL文件中收集到收集文件中的文档将不属于转储。

因此,您在这里有几种选择:

  • 您应该运行发布系列的最新版本-3.1.29。
  • 手动运行WAL收集,并观察服务器是否实际上删除了WAL文件。
  • 保留数据库文件的备份,并升级到受支持的ArangoDB版本
  • 使用更高版本的ArangoDB版本中较慢的ArangoExport可以按集合导出集合