我无法比较我的主数据和我的复制数据以进行程序化健全性检查。 我希望以下内容对我的主人和我的复制者都有同样的回应。对于某些集合,它没有。
curl -s -X POST --data-binary @- --dump - ${ARANGO_DB_ADDRESS}/_db/dbname/_api/export?collection=collection_name <<EOF
{"count":true}
EOF
我误解了这个API调用的作用吗?有更简单的方法吗?我尝试了两者的arangodump,但差异非常极端
答案 0 :(得分:0)
检查复制状态的最佳方法是先发出db.collection.count()
然后再发出更准确的db.collection.checksum()
。这些也可以通过这些卷曲调用发出:
数:
curl http://127.0.0.1:8529/_db/_system/_api/collection/test/count
{"id":"26724522","name":"test","isSystem":false,"doCompact":true,
"isVolatile":false,"journalSize":33554432,
"keyOptions":{
"type":"traditional","allowUserKeys":true},
"waitForSync":false,"indexBuckets":8,"count":40000,"status":3,
"type":2,"error":false,"code":200}
校验:
curl http://127.0.0.1:8529/_db/_system/_api/collection/test/checksum
{"id":"26724522","name":"test","isSystem":false,
"status":3,"type":2,"checksum":1808041899,"revision":"7926623225",
"error":false,"code":200}
关于export
- API,它们取决于服务器状态。在创建时将文档连续写入WAL文件.WAL文件被使用,因此您的磁盘上没有分布式写入,这会损害性能。稍后将文档移入其集合文件中。要确保导出不会损害服务器性能,只会导出集合文件中的文档。因此,根据收集设施的状态,文件的数量可能不同。
在异步状态下获取同步的最可靠方法是在从属设备上插入文档。如果发生这种情况,您可以通过发出以下命令回到理智的状态:
r.applier.stop()
r.syncCollection("myCollection", {endpoint: "tcp://127.0.0.1:8529"})
r.applier.start()
但是,对从站的更改将会丢失。