Приложение для репликации базы данных Arango не работает

#arangodb #arangojs

#arangodb #arangojs

Вопрос:

Я пытаюсь настроить модель Arango master-slave. Удалось выполнить первое пакетное обновление, но приложение для синхронизации в реальном времени не работает. Он продолжает отказывать в ограничении индексации, которое отлично работает в master и не имеет проблемы с дублированием ключа.

 require("@arangodb/replication").setupReplication({
...>   endpoint: "tcp://master:8529",
...>   username: “name”,
...>   password:  “pass”,
...>   autoStart: true,
...>  incremental:true,
...>  verbose:true,
...> });
 

состояние приложения.

 { 
  "state" : { 
    "started" : "2020-12-08T07:21:50Z", 
    "running" : false, 
    "phase" : "inactive", 
    "lastAppliedContinuousTick" : null, 
    "lastProcessedContinuousTick" : null, 
    "lastAvailableContinuousTick" : null, 
    "safeResumeTick" : null, 
    "progress" : { 
      "time" : "2020-12-09T07:07:44Z", 
      "message" : "applier shut down", 
      "failedConnects" : 0 
    }, 
    "totalRequests" : 4, 
    "totalFailedConnects" : 0, 
    "totalEvents" : 0, 
    "totalDocuments" : 0, 
    "totalRemovals" : 0, 
    "totalResyncs" : 3, 
    "totalOperationsExcluded" : 0, 
    "totalApplyTime" : 0, 
    "averageApplyTime" : 0, 
    "totalFetchTime" : 0, 
    "averageFetchTime" : 0, 
    "lastError" : { 
      "errorNum" : 0 
    }, 
    "time" : "2020-12-09T07:13:02Z" 
  }, 
  "server" : { 
    "version" : "3.6.4", 
    "serverId" : "237391144398597" 
  }, 
  "endpoint" :


 

Я пробовал (синхронизировать, асинхронно) все. Он просто выполняет первое пакетное обновление, и текущие обновления не выполняются. Каким-то образом приложение просто завершает работу. Пожалуйста, помогите

Ответ №1:

Можете ли вы попробовать либо

 require("@arangodb/replication").setupReplication({ 
   endpoint: "tcp://master:8529",
   username: “name”,
   password:  “pass”,
   autoStart: true,
   incremental:true,
   verbose:true,
   includeSystem: true 
});
 

для запуска приложения в текущей базе данных или, следующее для запуска приложения для всех баз данных / всего сервера

 require("@arangodb/replication").setupReplicationGlobal({ 
   endpoint: "tcp://master:8529",
   username: “name”,
   password:  “pass”,
   autoStart: true,
   incremental:true,
   verbose:true
});
 

В последнем случае ( setupReplicationGlobal ) вы можете позже проверить состояние приложения с помощью

 require("@arangodb/replication").globalApplier.state();
 

(обратите внимание на globalApplier here против just applier )

Комментарии:

1. Спасибо за быстрый ответ. Я думаю, что я также попытался включить системные коллекции, чтобы снова попробовать. На самом деле я попробовал выполнить глобальный и без глобального для репликации и приложения. Я не получаю никаких проблем в этой форме, но когда я запускаю require(«@arangodb / репликация»).syncGlobal({. или require(«@arangodb / репликация»).sync({. Я получаю проблему с ограничением для ключа, который я создал hasIndex. Это происходит только тогда, когда Master непрерывно использует данные из системы событий. Когда я взял копию главного не потребляющего события, это прошло без проблем.

2. — Недавно я обнаружил. Уникальный индекс не работает должным образом в Arango. каким-то образом у него есть «» пустая строка для нескольких документов. Это причина его сбоя при создании подчиненного устройства. Понятия не имею, как оно было размещено в первую очередь. я также обновил его до последней версии для того же. Не очень помогает.