web-dev-qa-db-fra.com

Sauvegardes Couchdb et clonage de la base de données

Nous examinons CouchDDB pour une application CMS-ISH. Quels sont les modèles courants, les meilleures pratiques et les conseils de flux de travail sur la sauvegarde de notre base de données de production?

Je suis particulièrement intéressé par le processus de clonage de la base de données à utiliser dans le développement et les tests.

Est-il suffisant de simplement copier les fichiers sur le disque de sous une instance d'exécution en direct? Pouvez-vous cloner des données de base de données entre deux instances d'exécution en direct?

Des conseils et description des techniques que vous utilisez seront grandement appréciées.

36
Kyle Burton

CouchDB prend en charge la réplication, alors répliquez simplement à une autre instance de Couchdb et de sauvegarde à partir de là, évitant de déranger l'endroit où vous écrivez des modifications.

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

Vous envoyez littéralement un POST Demande à votre instance CouchDB lui indiquant où se répliquer et fonctionne (TM)

Edit: Vous pouvez simplement céder les fichiers sous la base de données d'exécution tant que vous pouvez accepter les E/S HIT.

31
Marc Gear

Une autre chose à conscience est que vous pouvez copier des fichiers de sous une base de données en direct. Étant donné que vous pouvez avoir une base de données éventuellement importante, vous pouvez simplement le copier OOB de votre machine de test/production à une autre machine.

Selon la charge d'écriture des machines, il peut être conseillé de déclencher une réplication après la collecte des écrivies qui étions en cours lorsque le fichier a été copié. Mais la réplication de quelques enregistrements serait toujours plus rapide que la réplication de l'ensemble de la base de données.

Pour référence, voir: http://wiki.apache.org/couchdb/filesystembackup

37
Paul J. Davis

J'aimerais que la suggestion de Paul de Paul: juste cp Vos fichiers de base de données de sous le serveur en direct Si vous pouvez prendre le HIT I/O-CHARD. Si vous exécutez une copie répliquée de toute façon, vous pouvez copier en toute sécurité de cela aussi, sans avoir un impact sur la performance de votre maîtrise.

7
Jan Lehnardt

Couchdb fonctionne également très bien avec des instantanés de système de fichiers proposés par des systèmes de fichiers modernes tels que ZFS . Étant donné que le fichier de base de données est toujours dans un état cohérent, vous pouvez prendre l'instantané du fichier à tout moment sans affaiblir les garanties d'intégrité fournies par CouchDB.

Cela se traduit par presque pas d'i/O sur le dessus. Au cas où vous auriez E.G. a accidentellement supprimé un document de la base de données que vous pouvez déplacer l'instantané sur une autre machine et extraire les données manquantes là-bas. Vous pourriez même être capable de reproduire la base de données de production, mais je n'ai jamais essayé cela.

Mais assurez-vous toujours que vous utilisez exactement les mêmes révisions CouchDB lors de la déplacement des fichiers de base de données. Le format sur disque évolue toujours de manière incompatible.

7
max

La réplication CouchDB est horrible. Je fais généralement goudron ce qui est beaucoup mieux.

  1. Arrêtez le service CouchDB sur l'hôte source
  2. tar.gz les fichiers de données.
  3. Sur mes serveurs Ubuntu, c'est typiquement dans/var/lib/couchdb (parfois dans un sous-répertoire basé sur la version du canapé). Si vous n'êtes pas sûr de l'endroit où ces fichiers sont, vous pouvez trouver le chemin dans vos fichiers de configuration CouchDB ou souvent en effectuant un PS -A W pour voir la commande complète qui a démarré Couchdb. Assurez-vous d'obtenir les sous-répertoires commençant par . Lorsque vous archivez les fichiers.
  4. Redémarrez le service CouchDB sur l'hôte source.
  5. scp le fichier tar.gz à l'hôte de destination et décompressez-les dans un emplacement temporaire.
  6. chown Les fichiers à l'utilisateur et groupe qui possèdent les fichiers déjà dans le répertoire de la base de données de la destination. Ceci est probable COUCHDB: COUCHDB. Ceci est important, car de gâcher les autorisations de fichier est la seule façon dont j'ai réussi à gâcher ce processus jusqu'à présent.
  7. Arrêtez COUCHDB sur l'hôte de destination.
  8. cp les fichiers dans le répertoire de destination. Encore une fois sur mes hôtes, cela a été/var/lib/couchdb.
  9. Vérifiez les autorisations de fichier dans leur nouvelle maison.
  10. Redémarrez Couchdb sur l'hôte de destination.
1
coffeequant