我正在使用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日)
答案 0 :(得分:0)
请注意ArangoDB 3.1 is end of life已有一段时间。
下面描述的问题是特定于MMFiles-Storageengine的。
在转储开始时,ArangoDump将调用wal集合刷新机制。
这会将WAL文件中的所有文档收集到其特定的数据文件中。在等待服务器完成一段时间后,ArangoDump将开始从服务器绘制收集文件。
尚未从wAL文件中收集到收集文件中的文档将不属于转储。
因此,您在这里有几种选择: