是什么触发主动/从属切换为活动故障转移模式?

时间:2019-04-25 00:18:26

标签: arangodb arangodb-foxx

我有2个数据库服务器在3节点代理上以Active-Failover模式运行,都在RocksDB上运行3.4.5版,并且出现意外的领导者/跟随者交换机问题。

由于某种原因,运行某个查询会导致集群对切换角色。问题是我在日志中找不到任何指向 为什么 的情况。我一直在浏览TRACE日志,但看不到任何看起来不合适的地方。

我的问题是: 是什么原因导致集群切换角色?

作为参考,我正在同步两个集合,每个集合具有大约40万条记录,并用Perm_Collection中的数据更新永久集合(Temp_Collection)。同样,无论是从Foxx,aragosh还是通过WebUI运行查询,都会发生切换。这是explain计划:

Query String:
 FOR t IN Temp_Collection
     LET d = UNSET(t, ['_id','_rev'])
     UPSERT { _key: t._key }
         INSERT d
         REPLACE d
     IN Perm_Collection


Execution plan:
 Id   NodeType                    Est.   Comment
  1   SingletonNode                  1   * ROOT
  2   EnumerateCollectionNode   402798     - FOR t IN Temp_Collection   /* full collection scan */
 10   SubqueryNode              402798       - LET #5 = ...   /* subquery */
  4   SingletonNode                  1         * ROOT
 13   IndexNode                      1           - FOR #3 IN Perm_Collection   /* primary index scan */
  8   LimitNode                      1             - LIMIT 0, 1
  9   ReturnNode                     1             - RETURN #3
  3   CalculationNode           402798       - LET d = UNSET(t, [ "_id", "_rev" ])   /* simple expression */   /* collections used: t : Temp_Collection */
 11   CalculationNode           402798       - LET $OLD = #5[0]   /* simple expression */
 12   UpsertNode                     0       - UPSERT $OLD INSERT d REPLACE d IN Perm_Collection

Indexes used:
 By   Type      Collection   Unique   Sparse   Selectivity   Fields       Ranges
 13   primary   Perm_Collection      true     false       100.00 %   [ `_key` ]   (#3.`_key` == t.`_key`)
 12   primary   Perm_Collection      true     false            n/a   [ `_key` ]   $OLD

Functions used:
 Name    Deterministic   Cacheable   Uses V8
 UNSET   true            true        false  

Optimization rules applied:
 Id   RuleName
  1   remove-data-modification-out-variables
  2   use-indexes
  3   remove-filter-covered-by-index
  4   remove-unnecessary-calculations-2
  5   move-calculations-down

Write query options:
 Option                   Value
 ignoreErrors             false
 waitForSync              false
 nullMeansRemove          false
 mergeObjects             true
 ignoreDocumentNotFound   false
 readCompleteInput        false
 useIsRestore             false
 consultAqlWriteFilter    false
 exclusive                false
 overwrite                false
 ignoreRevs               true

同样,我不是在寻求有关此特定查询的帮助,只是试图揭示系统选择切换角色的原因。我尝试使用INSERT ... OPTIONS { overwrite: true },但失败,结果相同。

到目前为止,我发明的唯一解释与“慢”查询有关。该查询需要很长时间才能运行(超过2分钟),因此系统可能认为引擎已锁定? Foxx服务可能会超时吗?

0 个答案:

没有答案