2010-09-30 39 views
7

Tôi có một cụm 2 nút cassandra với hệ số nhân bản là 2 và AutoBootStrap = true. Mọi thứ đều tốt trong khi khởi động và cả hai nút đều nhìn thấy nhau. Hãy để chúng tôi gọi đó là các nút A và B.Vấn đề sao chép dữ liệu Cassandra

  1. Thêm một bộ chìa khóa và cột (cho phép gọi bộ K1 này) để cassandra qua nút A.
  2. Connect đến nút A và đọc lại thiết K1. Cùng trên Node B. Success - Tốt
  3. quá trình giết Cassandra trên Node B.
  4. Add thiết K2 qua A.
  5. Connect đến nút A và đọc thiết K2. Tốt
  6. Khởi động lại quá trình Cassandra trên nút B.
  7. Hãy thử đọc tất cả các phím từ B ... đặt K1, đặt K2 MISSING. (Thậm chí sau 30 phút)
  8. Thêm K3 vào A/B.
  9. Đọc tất cả các phím từ A - trả về bộ K1, K2, K3
  10. Đọc tất cả các phím từ B - trả về bộ K1, K3.

B không bao giờ đồng bộ hóa K2 ... (Đã hơn 12 giờ) Tại sao nút B không thấy tập K2 ... ai có ý tưởng gì?


Added Thông tin:

Ok ... Đây là vấn đề. Read_consistency_level được đặt thành 1 theo mặc định.

Vì vậy, khi chúng tôi yêu cầu nút B cho thiết lập K2, và nó không có nó (khi nó được cho là do nhân tố nhân bản = 2), nó ngay lập tức trả về với lỗi 'Không tìm thấy'.

Tuy nhiên, nếu chúng ta sử dụng tính nhất quán đọc là QUORUM hoặc ALL, thì B buộc phải yêu cầu A, sau đó trả về giá trị chính xác và B đồng bộ hóa khóa đó (lưu cục bộ).

Điều này dẫn đến một vấn đề khác - Điều này có nghĩa là khi nút B xuất hiện, nó không đồng bộ tất cả dữ liệu từ nút A, ngay cả sau một thời gian dài. Bây giờ nếu nút A bị hỏng, làm cách nào chúng tôi có thể truy cập dữ liệu chưa được đồng bộ hóa đó? (Tôi vừa kiểm tra rằng chúng tôi không thể)

Tôi đoán phải có một cách để buộc đồng bộ hóa dữ liệu. Tôi thấy INFO trong đầu ra của thiết bị đầu cuối cho thấy 15 hàng từ A đến B xuất hiện khi B xuất hiện, nhưng B không có các hàng cục bộ (vì chúng ta vẫn không thể đọc nó từ B với mức nhất quán ONE). Những gì đang xảy ra ở đây?

Trả lời

6

Có 3 cách cassandra đồng bộ cập nhật đã xảy ra trong khi một nút đã giảm:

  1. ám chỉ bàn giao. yêu cầu máy dò lỗi trên A nhận ra rằng B đã giảm trước khi bạn viết K2. Xem http://wiki.apache.org/cassandra/HintedHandoff
  2. đọc sửa chữa. yêu cầu B lên khi K2 được yêu cầu sửa chữa. Xem http://wiki.apache.org/cassandra/ReadRepair
  3. sửa chữa chống entropy. yêu cầu gọi thủ công ("sửa chữa nodetool"). xem http://wiki.apache.org/cassandra/AntiEntropy
+0

Cảm ơn jBellis. Tôi đã tiến thêm một bước với cassandra.Tuy nhiên, tôi đã gặp sự cố khác và đã thêm một số thông tin vào câu hỏi. – Rajan

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