2013-07-19 17 views
6

Sto provando a sincronizzare un database in un'installazione CouchDB locale (v 1.3.1 su un Mac) e un database su Cloudant con replica master-master.Installazione CouchDB Cloudant e locale Replica 2 vie

Nel mio locale Futon http://localhost:5984/_utils Ho configurato Replicator per replicare il mio database locale su Cloudant. Tutto funziona correttamente replicando dal database locale a quello Cloudant, ma non indietro. Se i dati cambiano nel database di Cloudant tali modifiche non sono state replicate nel mio database locale.

locale -> Cloudant = funziona

Cloudant -> = locale non funziona

Questo è possibile da effettuare? Qualcuno può aiutare?

Grazie!

+0

Hai provato a creare le attività di replica su cloudant anziché sul tuo CouchDB locale? Il replicatore di Cloudant di solito funziona meglio ... –

risposta

5

Alla fine ho capito che avevo solo bisogno di configurare due repliche dal mio CouchDB locale.

Qui ci sono entrambe le repliche:

{ 
    "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" 
} 

Ora, in http://localhost:5984/_utils/status.html ci sono due repliche in esecuzione.

Nota che ho aggiunto il nome utente e la password anche alla connessione locale. Questo perché devi essere un utente autorizzato per replicare i documenti di progettazione.

Grazie mille Mike, la tua risposta ha aiutato molto!

4

Puoi provare a specificare URL completi sia per l'origine che per la destinazione? Penso che sarebbe simile:

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

poi caricare questo documento:

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

allora si dovrebbe essere in grado di monitorare che da un:

http://127.0.0.1:5984/_active_tasks 

Se questo non funziona per te, per favore, puoi copiare/incollare:

  • il corpo di th e il documento nel database _replicator
  • grep il file di registro per nulla con _replication

Inoltre, c'è un classico 'Gotcha' qui, che penso che hai bisogno 'scrittore' autorizzazioni per l'origine e database di destinazione. Potrebbe sembrare strano, ma è perché il replicatore sta salvando i documenti del checkpoint sia sull'origine che sul bersaglio in modo che la prossima volta che chiedi di replicare, non debba ricominciare da capo.