2008-09-23 8 views
32

Chúng tôi đang xem xét CouchdDB cho ứng dụng CMS-ish. Một số mẫu phổ biến, phương pháp hay nhất và tư vấn luồng công việc xung quanh việc sao lưu cơ sở dữ liệu sản xuất của chúng tôi là gì?Sao lưu CouchDB và nhân bản cơ sở dữ liệu

Tôi đặc biệt quan tâm đến quá trình sao chép cơ sở dữ liệu để sử dụng trong quá trình phát triển và thử nghiệm.

Có đủ để chỉ sao chép các tệp trên đĩa ra khỏi một cá thể đang chạy không? Bạn có thể sao chép dữ liệu cơ sở dữ liệu giữa hai cá thể đang chạy không?

Lời khuyên và mô tả về các kỹ thuật bạn sử dụng sẽ được đánh giá cao.

Trả lời

30

CouchDB hỗ trợ sao chép, vì vậy chỉ cần sao chép sang một phiên bản khác của CouchDB và sao lưu từ đó, tránh làm phiền nơi bạn viết thay đổi.

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

Bạn có nghĩa là gửi một yêu cầu POST để dụ CouchDB bạn nói nó ở đâu để tái tạo, và nó hoạt động (tm)

EDIT: Bạn chỉ có thể CP ra các tập tin từ dưới cơ sở dữ liệu chạy miễn là bạn có thể chấp nhận hit I/O.

37

Một điều cần lưu ý khác là bạn có thể sao chép tệp từ dưới cơ sở dữ liệu trực tiếp. Cho rằng bạn có thể có một cơ sở dữ liệu lớn, bạn chỉ có thể sao chép nó từ OOB từ máy tính thử nghiệm/sản xuất của bạn sang một máy khác.

Tùy thuộc vào tải ghi của máy, có thể nên kích hoạt bản sao sau bản sao để thu thập bất kỳ ghi nào đang được tiến hành khi tệp được sao chép. Nhưng nhân rộng của một vài hồ sơ vẫn sẽ nhanh hơn nhân rộng toàn bộ cơ sở dữ liệu.

Để tham khảo see: http://wiki.apache.org/couchdb/FilesystemBackups

+1

"bạn có thể sao chép tệp từ dưới cơ sở dữ liệu trực tiếp" - Đây là lời khuyên tuyệt vời, tôi đang tìm cách sao chép cơ sở dữ liệu và thấy tôi có thể sao chép và đổi tên tệp .couch trong Trình tìm kiếm để thực hiện việc này. – DigitalDesignDj

6

Tôi muốn thứ hai đề nghị Phaolô: Chỉ cần cp các tập tin cơ sở dữ liệu từ dưới máy chủ trực tiếp nếu bạn có thể lấy I/O-load hit. Nếu bạn vẫn chạy bản sao được sao chép, bạn cũng có thể sao chép một cách an toàn từ đó, mà không ảnh hưởng đến hiệu suất của chương trình chính.

7

CouchDB cũng hoạt động rất độc đáo với ảnh chụp nhanh hệ thống tệp được cung cấp bởi hệ thống tệp hiện đại như ZFS. Vì tệp cơ sở dữ liệu luôn ở trạng thái nhất quán, bạn có thể lấy ảnh chụp nhanh của tệp bất kỳ lúc nào mà không làm suy yếu sự đảm bảo tính toàn vẹn do CouchDB cung cấp.

Kết quả này gần như không tính phí I/O. Trong trường hợp bạn có ví dụ vô tình xóa một tài liệu khỏi cơ sở dữ liệu, bạn có thể di chuyển ảnh chụp sang máy khác và trích xuất dữ liệu còn thiếu ở đó. Bạn thậm chí có thể tái tạo lại cơ sở dữ liệu sản xuất, nhưng tôi chưa bao giờ thử điều đó.

Nhưng luôn đảm bảo bạn sử dụng chính xác cùng các phiên bản couchdb khi di chuyển xung quanh tệp cơ sở dữ liệu. Định dạng trên đĩa vẫn đang phát triển theo các cách không tương thích.

1

Sao chép CouchDB là khủng khiếp. Tôi thường làm tar tốt hơn nhiều.

  1. Dừng dịch vụ CouchDB trên máy chủ nguồn
  2. tar.gz các tệp dữ liệu.
  3. Trên máy chủ Ubuntu của tôi, đây là thông thường trong/var/lib/couchdb (đôi khi trong thư mục con dựa trên phiên bản Couch). Nếu bạn không chắc chắn các tệp này ở đâu, bạn có thể tìm đường dẫn trong tệp cấu hình CouchDb của bạn hoặc thường bằng cách thực hiện lệnh ps -A w để xem lệnh đầy đủ đã bắt đầu CouchDb. Đảm bảo bạn nhận được các thư mục con bắt đầu bằng . khi bạn lưu trữ các tệp.
  4. Khởi động lại dịch vụ couchdb trên máy chủ nguồn.
  5. scp tệp tar.gz vào máy chủ đích và giải nén chúng ở vị trí tạm thời tại đó.
  6. chown các tệp cho người dùng và nhóm sở hữu các tệp đã có trong thư mục cơ sở dữ liệu trên đích. Đây có thể là couchdb: couchdb. Điều này rất quan trọng vì việc làm rối loạn quyền truy cập tệp là cách duy nhất tôi đã quản lý để làm hỏng quá trình này cho đến thời điểm này.
  7. Dừng CouchDB trên máy chủ đích.
  8. cp các tệp vào thư mục đích. Một lần nữa trên máy chủ của tôi này đã được/var/lib/couchdb.
  9. Kiểm tra kỹ quyền của tệp trong nhà mới của họ.
  10. Khởi động lại CouchDB trên máy chủ đích.
+4

Nhân rộng chỉ là về điều duy nhất mà CouchDB là _really_ giỏi - đó là toàn bộ điểm đằng sau thiết kế tài liệu dựa trên sửa đổi của nó. Tôi sẽ nghiêm túc đặt câu hỏi tại sao bạn đang sử dụng nó nếu bạn không sao chép. Ngoài ra, bạn không cần dừng CouchDB để sao chép các tệp (ref: http://wiki.apache.org/couchdb/FilesystemBackups) – slang

+0

Thật sao? Sao chép sự cố trên cơ sở dữ liệu lớn, nếu kích thước lớn hơn 20GB. Tôi không nói về cơ sở dữ liệu thu nhỏ. Hoặc bạn là một nhà phát triển couchdb ... đó là lý do tại sao hỗ trợ thiết kế sao chép này. Thành thật mà nói các sản phẩm hút tại sao chép ... quá trình treo nhiều lần cho DB cỡ lớn !!! – coffeequant

+1

Haha, không - Tôi không phải là nhà phát triển CouchDB - Tôi chỉ sử dụng nó trong một số hệ thống phân tích nội bộ tại VICE. Và 20GB không phải là vấn đề - nếu bạn gặp sự cố, tôi sẽ báo cáo rằng với Apache là lỗi. – slang