added two faqs to couch doc
[leap_doc.git] / docs / platform / details / couchdb.md
1 @title = "CouchDB"
2
3 Rebalance Cluster
4 =================
5
6 Bigcouch currently does not have automatic rebalancing.
7 It will probably be added after merging into couchdb.
8 If you add a node, or remove one node from the cluster,
9
10 . make sure you have a backup of all DBs !
11
12     /srv/leap/couchdb/scripts/couchdb_dumpall.sh
13
14
15 . delete all dbs
16 . shut down old node
17 . check the couchdb members
18
19     curl -s —netrc-file /etc/couchdb/couchdb.netrc -X GET http://127.0.0.1:5986/nodes/_all_docs
20     curl -s —netrc-file /etc/couchdb/couchdb.netrc http://127.0.0.1:5984/_membership
21
22
23 . remove bigcouch from all nodes
24
25     apt-get --purge remove bigcouch
26
27
28 . deploy to all couch nodes
29
30     leap deploy development +couchdb
31
32 . most likely, deploy will fail because bigcouch will complain about not all nodes beeing connected. Lets the deploy finish, restart the bigcouch service on all nodes and re-deploy:
33
34     /etc/init.d/bigcouch restart
35
36
37 . restore the backup
38
39      /srv/leap/couchdb/scripts/couchdb_restoreall.sh
40
41
42 Re-enabling blocked account
43 ===========================
44
45 When a user account gets destroyed from the webapp, there's still a leftover doc in the identities db so other ppl can't claim that account without admin's intervention. Here's how you delete that doc and therefore enable registration for that particular account again:
46
47 . grep the identities db for the email address:
48
49     curl -s --netrc-file /etc/couchdb/couchdb.netrc -X GET http://127.0.0.1:5984/identities/_all_docs?include_docs=true|grep test_127@bitmask.net
50
51
52 . lookup "id" and "rev" to delete the doc:
53
54     curl -s --netrc-file /etc/couchdb/couchdb.netrc -X DELETE 'http://127.0.0.1:5984/identities/b25cf10f935b58088f0d547fca823265?rev=2-715a9beba597a2ab01851676f12c3e4a'
55
56
57 How to find out which userstore belongs to which identity ?
58 ===========================================================
59
60     /usr/bin/curl -s --netrc-file /etc/couchdb/couchdb.netrc '127.0.0.1:5984/identities/_all_docs?include_docs=true' | grep testuser
61
62     {"id":"665e004870ee17aa4c94331ff3ecb173","key":"665e004870ee17aa4c94331ff3ecb173","value":{"rev":"2-2e335a75c4b79a5c2ef5c9950706fe1b"},"doc":{"_id":"665e004870ee17aa4c94331ff3ecb173","_rev":"2-2e335a75c4b79a5c2ef5c9950706fe1b","user_id":"665e004870ee17aa4c94331ff3cd59eb","address":"testuser@example.org","destination":"testuser@example.org","keys": ...
63
64 * search for the "user_id" field
65 * in this example testuser@example.org uses the database user-665e004870ee17aa4c94331ff3cd59eb
66
67
68 How much disk space is used by a userstore
69 ==========================================
70
71 Beware that this returns the uncompacted disk size (see http://wiki.apache.org/couchdb/Compaction)
72
73     echo "`curl --netrc -s -X GET 'http://127.0.0.1:5984/user-dcd6492d74b90967b6b874100b7dbfcf'|json_pp|grep disk_size|cut -d: -f 2`/1024"|bc
74