【问题标题】:Arangodb stops async replication after some timeArangodb 在一段时间后停止异步复制
【发布时间】:2017-11-21 23:11:45
【问题描述】:

我在 Kubernetes 上使用 ArangoDB 3.2.2。我有一个主数据库和一个从数据库。在 arangosh 内的从数据库上,我输入以下命令:

db._useDatabase("mydb");

equire("@arangodb/replication").setupReplication({
  endpoint: "tcp://master:8529",
  username: "root",
  password: "123456",
  database: "mydb",
  verbose: true,
  includeSystem: false,
  incremental: true,
  autoResync: true,
  maxConnectRetries: 20,
  adaptivePolling: false,
  idleMinWaitTime: 0.001,
  idleMaxWaitTime: 1.5,
  chunkSize: 5000
});

命令阻塞几秒钟,然后开始复制,我可以看到主数据库中的集合已复制到从属数据库。但是,一段时间后复制停止。

当我跑步时: require("@arangodb/replication").applier.state 这就是我所看到的:

{ 
  "state" : { 
    "running" : true, 
    "lastAppliedContinuousTick" : "6384020", 
    "lastProcessedContinuousTick" : "6384026", 
    "lastAvailableContinuousTick" : "6389353", 
    "safeResumeTick" : "6382367", 
    "progress" : { 
      "time" : "2017-11-15T12:14:09Z", 
      "message" : "fetching master log from tick 6382367, first regular tick 6367894, barrier: 0, open transactions: 0", 
      "failedConnects" : 0 
    }, 
    "totalRequests" : 1155, 
    "totalFailedConnects" : 0, 
    "totalEvents" : 83, 
    "totalOperationsExcluded" : 0, 
    "lastError" : { 
      "errorNum" : 0 
    }, 
    "time" : "2017-11-15T12:15:47Z" 
  }, 
  "server" : { 
    "version" : "3.2.2", 
    "serverId" : "77969163868004" 
  }, 
  "endpoint" : "tcp://master:8529", 
  "database" : "mydb" 
}

当我再次运行复制命令时,我看到集合再次被复制...

如何初始化一个稳定的复制过程? 我知道这是一个异步复制,但在我的用例中,我需要尽快更新从属设备...我的复制配置是否适合我的需求?

【问题讨论】:

  • 如果我理解正确,复制应用程序将其状态报告为“正在运行”,而其他分析表明实际上没有应用主服务器的任何更改?我想了解您如何得出应用程序不起作用的结论。您是否正在查看集合中的文档计数?或者您正在查看应用程序state() 命令的多个进度结果?至少这里的刻度值和totalRequests 值应该随着时间的推移而增加。如果他们不这样做,那么应用程序似乎确实挂了。
  • 顺便说一下,配置的chunkSize 值似乎相当低。它只有 5KB,这可能意味着 master 返回的批次最多会那么大。如果插入/修改/删除了许多文档,或者文档大小通常大于 100 字节左右,则 5KB 并不多。我建议将 chunkSize 的值增加到 1 MB 左右,看看是否有帮助,甚至使用默认值。我还建议打开adaptivePolling,因为这意味着当没有太多事情可做时,从从属到主控发出的 HTTP 请求会减少。
  • 是否有任何其他进程(除了 arangod 本身)试图在从属设备上写入数据,特别是写入集合 my_col
  • 两种存储引擎(RocksDB 和 MMFiles)肯定存在差异。但是,复制应该与两种存储引擎一起工作,而不仅仅是一个。所以在从站上你只是在读取数据,而使用 RocksDB 会卡住吗?那听起来像一个错误!
  • 这可能是 3.2.8 版本中修复的错误的副作用,但这纯粹是猜测,因为我还没有重现该问题。

标签: kubernetes replication arangodb


【解决方案1】:

这似乎是 ArangoDB 3.2.2 中的一个错误 在 ArangoDB 3.2.8 中,复制似乎可以工作(即使使用 RocksDB)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多