2011-07-26 3 views
0

J'ai un serveur de production qui exécute une application qui utilise CouchDB comme base de données principale. Je voudrais configurer un serveur de transfert qui possède une instance CouchDB que je peux toujours synchroniser avec l'instance de production et obtenir une copie propre.Configuration du stockage intermédiaire avec couchdb

Une solution naïve consiste simplement à faire en sorte que le serveur de transfert répète en continu la base de données du serveur de production, et l'utilise simplement. Le problème est bien sûr que lors des tests sur le serveur de transfert, je peux faire des choses qui modifient la base de données.

Fonctionnellement correct serait pour moi de supprimer la base de données à chaque fois et de reproduire à partir de la production; mais, évidemment, cela prendrait un temps considérable si je devais recommencer à zéro à chaque fois. Je cherche une solution quelque chose comme: 1) Conserver une copie vierge de la production db sur le serveur de transit, qui réindexe constamment ses vues 2) copier tous les fichiers db, y compris les index à un db nommé quelque chose 3) utilisez-le et soufflez-le quand vous avez terminé.

Est-ce que quelqu'un a déjà essayé quelque chose comme ça et Est-ce que copier des fichiers db et les renommer fonctionne même sans problème? Si oui, quels fichiers ont besoin d'être copiés?

Répondre

2

Votre approche est ce que je recommanderais. La copie de fichiers DB et d'index vers un nouveau nom fonctionne comme prévu.

Vérifiez /_config/couchdb pour vos valeurs de database_dir et view_index_dir puis

cd $database_dir 
cp live_replica.couch local_copy_to_mess_with.couch 

cd $view_index_dir # most likely the same dir 
cp -r .live_replica_design .local_copy_to_mess_with_design 

Assurez-vous d'exécuter ces commandes en tant que propriétaire de tous les autres fichiers dans ces répertoires, par exemple couchbase, sinon couchdb n'aura pas les permissions pour utiliser les fichiers que vous créez. Vous pouvez vérifier les propriétaires et groupes corrects avec ls -alR.

+0

Merci. Je suis content que ce soit aussi facile que de copier des fichiers. –

+1

J'ai essayé ceci et je reçois {"erreur": "tuer", "raison": "{gen_server, appel, \ n [serveur_serveur, \ n {ouvrir, << \" cchq-staging \ ">>, \ n [{user_ctx, \ n {user_ctx, <<\"admin\">>, \ n "\", \ n << \ "{couch_httpd_auth, default_authentication_handler} \" >>}}}, \ n infini]} "} –

+0

Lors de l'accès à http : // admin: ****** @ localhost: 5984/{copied_db /. Accéder à la db originale fonctionne. J'ai essayé de le faire avec et sans le {copied_db} déjà existant et le résultat est le même. Tous les autres fichiers qui doivent être copiés? –

Questions connexes