【问题标题】:Arangodb compare replicant and masterArangodb 比较复制者和大师
【发布时间】:2016-07-22 18:58:37
【问题描述】:

我在比较我的主数据和我的复制数据以进行程序健全性检查时遇到问题。 我希望以下内容对我的主人和我的复制人做出相同的回应。对于某些集合,它不会。

curl -s -X POST --data-binary @- --dump - ${ARANGO_DB_ADDRESS}/_db/dbname/_api/export?collection=collection_name <<EOF
{"count":true}
EOF

我是否误解了此 API 调用的作用?有没有更简单的方法来做到这一点?我尝试了两者的arangodump,但差异非常极端

【问题讨论】:

  • 您使用的是哪个 ArangoDB 版本?您可能知道文档的顺序无法保证 - 因此您可能无法直接比较主服务器及其副本的转储。
  • 2.8.11 - 我同意可能无法保证订单,但计数不应该匹配吗? @dothebart

标签: arangodb


【解决方案1】:

检查复制状态的最佳方法是首先发出db.collection.count(),然后更精确地发出db.collection.checksum()。这些也可以通过以下 curl 调用发出:

计数:

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()

但是,对从站所做的更改将会丢失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2012-06-14
    • 2013-02-21
    • 1970-01-01
    相关资源
    最近更新 更多