2013-07-19 6 views
6

Ich versuche eine Datenbank in einer lokalen CouchDB-Installation (v 1.3.1 auf einem Mac) und eine Datenbank auf Cloudant mit Master-Master-Replikation zu synchronisieren.Cloudant und lokale CouchDB Installation 2-Wege-Replikation

In meinem lokalen Futon http://localhost:5984/_utils habe ich Replicator konfiguriert, um meine lokale Datenbank zu Cloudant zu replizieren. Alles funktioniert einwandfrei von der lokalen Datenbank zum Cloudant, aber nicht rückwärts. Wenn sich Daten in der Cloudant-Datenbank ändern, werden diese Änderungen nicht in meine lokale Datenbank repliziert.

Lokale -> Cloudant = arbeitet

Cloudant -> Local = nicht

Ist das möglich gemacht werden funktioniert? Kann jemand helfen?

Danke!

+0

Haben Sie versucht, die Replikationsaufgaben auf Cloudant anstatt auf Ihrer lokalen CouchDB zu erstellen? Der Replikator von Cloudant funktioniert normalerweise besser ... –

Antwort

5

Endlich fand ich heraus, dass ich nur zwei Replikationen von meiner lokalen CouchDB konfigurieren musste.

Hier sind beide Replikationen:

{ 
    "source":"https://username:[email protected]/cloud_db", 
    "target":"http://username:[email protected]:5985/local_db" 
} 

{ 
    "source":"http://username:[email protected]:5985/local_db", 
    "target":"https://username:[email protected]/cloud_db" 
} 

nun in http://localhost:5984/_utils/status.html gibt es zwei Lauf Replikationen.

Beachten Sie, dass ich den Benutzernamen und das Kennwort der lokalen Verbindung hinzugefügt habe. Das liegt daran, dass Sie ein autorisierter Benutzer sein müssen, um Design-Dokumente zu replizieren.

Vielen Dank Mike, Ihre Antwort hat mir sehr geholfen!

4

Können Sie versuchen, vollständige URLs für Quelle und Ziel anzugeben? Ich denke, es würde so aussehen:

#create the replicator database for your local server 
curl -X PUT 'http://127.0.0.1:5984/_replicator' 

dann dieses Dokument hochladen:

{ 
    "source":"https://username:[email protected]/source_db", 
    "target":"http://127.0.0.1:5985/target_db" 
} 

Dann sollten Sie in der Lage sein, zu überwachen, dass durch eine:

http://127.0.0.1:5984/_active_tasks 

Wenn das nicht funktioniert für Sie, können Sie bitte kopieren/einfügen:

  • der Körper von th e Dokument in der _replicator Datenbank
  • grep die Protokolldatei für alles, was mit _replication

Auch gibt einen Klassiker ‚Gotcha‘ hier, dass ich glaube, Sie brauchen ‚Schriftsteller‘ sowohl auf Berechtigungen der Quell- und Zieldatenbank. Das mag seltsam erscheinen, liegt aber daran, dass der Replikator Prüfpunktdokumente sowohl auf der Quelle als auch auf dem Ziel speichert, damit das nächste Mal, wenn Sie die Replikation anfordern, nicht von vorne beginnen muss.