Domanda

Stiamo esaminando CouchdDB per un'applicazione CMS. Quali sono alcuni schemi comuni, migliori pratiche e consigli sul flusso di lavoro relativi al backup del nostro database di produzione?

Sono particolarmente interessato al processo di clonazione del database per l'utilizzo in sviluppo e test.

È sufficiente copiare i file sul disco da un'istanza in esecuzione dal vivo? Puoi clonare i dati del database tra due istanze in esecuzione dal vivo?

I consigli e la descrizione delle tecniche utilizzate saranno molto apprezzati.

È stato utile?

Soluzione

CouchDB supporta la replica, quindi replicati in un'altra istanza di CouchDB e esegui il backup da lì, evitando di disturbare dove scrivi le modifiche.

http://wiki.apache.org/couchdb/FrequentlyAskedQuestions#how_replication

Invii letteralmente una richiesta POST alla tua istanza di CouchDB dicendogli dove replicare, e funziona (tm)

EDIT: puoi semplicemente estrarre i file dal database in esecuzione fintanto che puoi accettare l'hit I / O.

Altri suggerimenti

Un'altra cosa da tenere presente è che è possibile copiare file da un database live. Dato che potresti avere un database forse di grandi dimensioni, puoi semplicemente copiarlo OOB dal tuo computer di test / produzione su un altro computer.

A seconda del carico di scrittura delle macchine, può essere consigliabile attivare una replica dopo la copia per raccogliere eventuali scritture in corso al momento della copia del file. Ma la replica di alcuni record sarebbe comunque più rapida della replica dell'intero database.

Per riferimento vedi: http://wiki.apache.org/couchdb/FilesystemBackups

CouchDB funziona anche molto bene con le istantanee dei filesystem offerte dai moderni filesystem come ZFS . Poiché il file di database è sempre in uno stato coerente, è possibile acquisire l'istantanea del file in qualsiasi momento senza indebolire le garanzie di integrità fornite da CouchDB.

Ciò comporta quasi nessun sovraccarico di I / O. Nel caso abbiate ad es. eliminato accidentalmente un documento dal database, è possibile spostare l'istantanea su un altro computer ed estrarre lì i dati mancanti. Potresti anche essere in grado di replicare nel database di produzione, ma non l'ho mai provato.

Ma assicurati sempre di usare esattamente le stesse revisioni couchdb quando sposti i file del database. Il formato su disco si sta ancora evolvendo in modi incompatibili.

Vorrei dare un secondo suggerimento a Paul: basta cp i file del database da sotto il server live se è possibile eseguire l'hit di I / O-load. Se esegui comunque una copia replicata, puoi tranquillamente copiare anche da quella, senza influire sulle prestazioni del tuo master.

La replica di CouchDB è orribile. In genere faccio tar che è molto meglio.

  1. Arresta il servizio CouchDB sull'host di origine
  2. tar.gz i file di dati.
  3. Sui miei server Ubuntu questo è in genere in / var / lib / couchdb (a volte in una sottodirectory basata sulla versione Couch). Se non sei sicuro di dove siano questi file, puoi trovare il percorso nei file di configurazione di CouchDb, o spesso eseguendo ps -A w per visualizzare il comando completo che ha avviato CouchDb. Assicurati di ottenere le sottodirectory che iniziano con . quando archivi i file.
  4. Riavvia il servizio couchdb sull'host di origine.
  5. scp il file tar.gz sull'host di destinazione e scompattalo in una posizione temporanea lì.
  6. chown i file per l'utente e il gruppo che possiede i file già presenti nella directory del database sulla destinazione. Questo è probabilmente couchdb: couchdb. Questo è importante, poiché confondere i permessi dei file è l'unico modo in cui sono riuscito a rovinare questo processo finora.
  7. Arresta CouchDB sull'host di destinazione.
  8. cp i file nella directory di destinazione. Ancora una volta sui miei host questo è stato / var / lib / couchdb.
  9. Ricontrolla i permessi dei file nella loro nuova casa.
  10. Riavvia CouchDB sull'host di destinazione.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top