[noSQL] Hướng dẫn cài đặt, backup, replication Apache CouchDB dùng apt-get và install từ source code trên Ubuntu

CouchDB là một hệ quản trị cơ sở dữ liệu NoSQL lưu trữ theo hướng văn bản, nguồn mở, truy cập bằng cách sử dụng hệ thống hàm (API) bằng JSON RESTful, có khả năng khả chuyển cao trong việc tương tác dữ liệu giữa các nút. Điều này khiến cho nó rất thích hợp trong các trường hợp liên quan đến việc thống nhất và bền vững dữ liệu.Việc tích hợp các bản sao (ở đây là các view) làm cho nó là nền tảng lý tưởng cho việc đồng bộ hóa dữ liệu giữa điện thoại di động, máy tính và máy chủ. Couchdb không có mô hình cố định. Thay vào đó nó lưu trữ các bản ghi (hay văn bản) theo định dạng JSON, khá nhẹ và dễ hiểu cấu trúc dữ liệu, rất thích hợp cho việc lưu trữ dữ liệu.
Thuật ngữ "Couch" là từ viết tắt của "Cluster Of Unreliable Commodity Hardwareo"(tạm dịch là “Cụm phần cứng hàng hóa không tin cậy”- các thiết bị này thường được nối mạng để cung cấp nhiều sức mạnh xử lý hơn khi những người sở hữu chúng không đủ khả năng để mua các siêu máy tính phức tạp, hoặc muốn tiết kiệm tối đa trong thiết kế) đã phản ánh mục tiêu của CouchDB là một cơ sở dữ liệu có khả năng mở rộng cực tốt, đưa ra tính sẵn sàng và độ tin cậy cao ngay cả khi chạy trên phần cứng thường dễ hỏng hoặc lỗi.
Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt Apache CouchDB dùng apt-get, yum và install từ source code trên Ubuntu server 12.04 và cách replication 2 database CouchDB với nhau.

1. Cài đặt
* Từ apt-get
B1. Cập nhật tất cả các gói rpm mới nhất
apt-get update
B2. Cài đặt CouchDB
apt-get install couchdb
B3. Cài đặt CURL để thao tác với CouchDB
apt-get install curl
B4. Kiểm tra
couchdb -v
couchdb - Apache CouchDB 1..4
curl -V
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 curl http://127.0.0.1:5894
{"couchdb":"Welcome","version":"1.0.4"}
B5. Chỉnh sửa cấu hình để truy cập CouchDB từ host khác
nano /etc/couchdb/default.ini
Sửa 127.0.0.1 thành IP của server đang cài đặt CouchDB
[httpd]
port = 5984
bind_address = 192.168.2.239
B6. Chạy trình quản lý Futon 
Futon được tích hợp sẵn vào CouchDB, nó giống như PhpMyAdmin, dùng để can thiệp sâu hơn vào database dựa vào giao diện web
http://192.168.2.239:5984/_utils/
Lưu ý: Mặc định Futon không yêu cầu xác nhận quyền admin, do đó bạn phải khởi tạo user và password để tăng tính bảo mật.

* Cài đặt từ source code (trên Ubuntu server)
B1. Cài đặt các gói cần thiết cho việc cài đặt couchdb
sudo apt-get install -y g++
sudo apt-get install -y erlang-base erlang-dev erlang-eunit erlang-nox
sudo apt-get install -y libmozjs185-dev libicu-dev libcurl4-gnutls-dev libtool
B2. Download source từ trang chủ http://couchdb.apache.org
mkdir /data
wget http://mirrors.digipower.vn/apache/couchdb/source/1.3.1/apache-couchdb-1.3.1.tar.gz
cd /data/couchdb/
B3. Giải nén, phân quyền và cài đặt từ source
 ./configure (./configure --prefix=/data/couchdb/)
make
make install
B4. Cài đặt CouchDB như một service và tự khởi động:
sudo adduser --disabled-login --disabled-password --no-create-home couchdb
sudo chown couchdb:couchdb -R /data/couchdb
sudo ln -s /data/couchdb/etc/init.d/couchdb  /etc/init.d
sudo update-rc.d couchdb defaults
B5. Khởi chạy couchdb
sudo couchdb -b
B6. Stop couchDB:
sudo couchdb -k
Force stop couchDB:
sudo ps -U couchdb -o pid= | sudo xargs kill -9
2. Replication
Câu lệnh:
curl -H 'Content-Type: application/json' -X POST http://username:password@localhost:5984/_replicate -d ' {"source": "http://admin1:admin1@couchdb.chungkol.com/c735588", "target": "c735588", "create_target": true, "continuous": true}'
Câu lệnh trên tiến hành replication database c735588 từ server couchdb.chungkol.com (username/password là admin1/admin1) về couchdb trên máy localhost, tự động tạo database với tên tương ứng nếu nó chưa tồn tại ("create_target": true) và cho phép replication liên tục ("continuous": true)

3. Backup:
Việc backup CouchDB rất đơn giản, chúng ta chỉ việc download các file tương ứng sau sang thư mục cài đặt tương ứng và restart couchdb.
Default install:
Configuration: /etc/couchdb/
Database files: /var/lib/couchdb/
Logs: /var/log/couchdb/
Custom install with prefix:
Configuration: %couch%\etc\couchdb\
Database files: %couch%\var\lib\couchdb\
Logs: %couch%\var\log\couchdb\
Xem thêm: [Linux] Virtual host with mod_proxy on Apache 2