2012-05-05 27 views
15

Tôi đã tự hỏi điều gì sẽ là cách tốt nhất để sao lưu toàn bộ không gian phím trong Cassandra ... bạn nghĩ sao?Cassandra: sao lưu toàn bộ không gian phím

Trước đây tôi chỉ sao chép thư mục dữ liệu vào ổ đĩa cứng dự phòng, nhưng sau đó tôi đã có vấn đề để khôi phục cơ sở dữ liệu sau khi cập nhật.

Trả lời

13

Cách tốt nhất là làm ảnh chụp nhanh (nodetool snapshot). Bạn có thể tìm hiểu rất nhiều về cách hoạt động và cách tốt nhất để sử dụng nó trong Datastax documentation (tuyên bố từ chối trách nhiệm: Tôi làm việc cho Datastax).

Bạn sẽ muốn đảm bảo bạn đã bật JNA (một số hướng dẫn có liên quan có thể được tìm thấy trên this page). Nếu bạn làm như vậy, ảnh chụp nhanh là cực kỳ nhanh chóng; chúng chỉ là các liên kết cứng với các sstables hiện có. Không cần sao chép. Bạn có thể kết hợp ảnh chụp nhanh với các công cụ sao lưu khác (hoặc chỉ rsync, cp, v.v.) nếu bạn muốn theo dõi các bản sao lưu của mình theo một cách cụ thể.

+5

Điều này có vẻ như một thiết kế khủng khiếp. Tôi buộc phải tìm phiên bản hiện tại của bảng tablename-asdfasfsadfaf >> thay đổi thư mục đó >> sao chép các tập tin snapshot ra .. và sau đó làm điều này như 50 lần bởi vì tôi phải làm điều đó một lần cho mỗi bảng. Nên có một cách để chụp tất cả các tệp vào một thư mục đầu ra hoặc một tệp sao lưu duy nhất. Tốt nhất bạn có thể làm là viết một số kịch bản để kéo ra tất cả các tập tin. – KingOfHypocrites

+1

@KingOfHypocrites, nó khá kludgey, nhưng không quá khó để giải quyết. Bạn có thể sử dụng tên ảnh chụp nhanh để di chuyển hoặc sao chép dữ liệu đến bất cứ nơi nào bạn muốn lưu trữ. Nếu bạn chọn một tên khi tạo một ảnh chụp nhanh giúp dễ dàng hơn. Nếu không, bạn có thể sử dụng lệnh 'nodetool listsnapshots' để lấy tên (tính năng được giới thiệu trong cassandra 2.1). – Gene

6

Bên cạnh việc đọc Datastax documentation, tôi đã tìm thấy bài viết "incrementally backup up cassandra with amanda" sâu sắc. Đó là về cách sử dụng sao lưu gia tăng và ảnh chụp nhanh.

Cuối cùng, nó khuyến cáo các thủ tục sau:

  1. Full backup
    • Gỡ bỏ các file gia tăng cũ và liên kết tượng trưng.
    • nodetool snapshot
    • liên kết mềm tất cả các file ảnh chụp vào một thư mục sao lưu
    • Sao lưu thư mục đó dereferencing symlink.
    • nodetool clearsnapshot và xóa liên kết tượng trưng.
  2. sao lưu Incremental (không nên nhầm lẫn với backup BUILTIN cassandra của):
    • nodetool flush
    • liên kết mềm tất cả các file cộng dồn vào thư mục sao lưu.
    • Sao lưu liên kết tượng trưng thư mục dereferencing.
  3. Restore
    • Khôi phục sao lưu đầy đủ cuối cùng và tất cả các incrementals.
+0

Khi bạn nói "Khôi phục bản sao lưu đầy đủ cuối cùng", chỉ cần nói lại mục tiêu mong muốn. Nhưng - làm thế nào được thực hiện? Có lệnh nào không? Nó đơn giản như sao chép các thư mục snapshot lại vào vị trí? –

+0

@DonBranson Nó cũng là sự hiểu biết của tôi rằng các tập tin ảnh chụp cần phải được khôi phục tại vị trí ban đầu của họ. Bài viết đề cập rằng họ sử dụng một kịch bản để tự động hóa nó (nhưng không đi vào chi tiết): "Sau đó, tại thời điểm khôi phục, các tập tin được đặt trong thư mục sao lưu, và với một kịch bản có KS và CF từ tên tập tin, chúng được 'xử lý' vào đúng thư mục " –

6

Tôi đã viết một công cụ đơn giản python để tự động chụp cụm và sao lưu và lưu trữ chúng trên S3.

https://github.com/tbarbugli/cassandra_snapshotter là trang github, có bạn cũng có thể tìm thấy tài liệu

+0

Bất kỳ cơ hội nào bạn cũng đã viết một công cụ khôi phục? –

4

Một lựa chọn khác là để giám sát các sstables đang được viết, và từng bước sao lưu các tập tin.

Hãy kiểm tra tablesnap, ví dụ.

Từ các tài liệu:

Tablesnap là một kịch bản mà sử dụng inotify để giám sát một thư mục cho các sự kiện IN_MOVED_TO và phản ứng với chúng bằng cách đẻ trứng một chủ đề mới để tải lên tập tin đó đến Amazon S3, cùng với một danh sách định dạng JSON các tệp khác nằm trong thư mục tại thời điểm sao chép.

Khi chạy cụm Cassandra, hành vi này có thể khá hữu ích vì nó cho phép sao lưu điểm trong thời gian tự động của SSTables. Về mặt lý thuyết, bảng biểu sẽ hoạt động đối với bất kỳ ứng dụng nào mà tệp được ghi vào một số vị trí tạm thời, sau đó chuyển vào vị trí cuối cùng của chúng khi dữ liệu được ghi vào đĩa. Tablesnap cũng làm cho giả định rằng các tập tin là bất biến sau khi viết.

Các vấn đề liên quan