Bạn có phải chạy sửa chữa gật đầu trên mỗi nút không?


12

Bạn có phải chạy nodetool repairtrên mọi nút trong một cụm, hay bạn chỉ cần chạy nó trên một nút, và từ đó Cassandra sẽ lo phần còn lại?

Câu trả lời:


9

Khi xem qua tài liệu này, tôi gặp khó khăn khi tìm tài liệu tham khảo cho vấn đề này, nhưng câu trả lời ngắn gọn là "có" bạn cần chạy nodetool repairtrên mỗi nút trong cụm của bạn. Tài liệu gần nhất tôi có thể tìm thấy là tài liệu về sửa chữa các nút cho thấy rằng bạn không nên chạy sửa chữa trên nhiều nút trong cụm của mình cùng một lúc.

Bạn cũng có thể chạy sửa chữa với -prcờ, điều này giới hạn hoạt động sửa chữa trong phạm vi mã thông báo đầu tiên mà nút hiện tại chịu trách nhiệm. Điều này cắt giảm sự trùng lặp công việc khi chạy trên các nút còn lại.


Vì vậy, nếu tôi chạy với -prmọi nút, nó có bao gồm toàn bộ không gian phím không?
2rs2ts

1
@ 2rs2ts Có, nếu bạn chạy nó -prtrên mọi nút, nó sẽ bao phủ toàn bộ không gian phím.
Aaron

1
Được rồi ... Tôi sẽ giả sử rằng bạn phải chạy nó trên mọi nút nhưng bạn có thể tiết kiệm thời gian với -prcờ.
2rs2ts

1
Tôi đã thêm một số nguồn cho câu trả lời khác. Nguồn này khá rõ ràng: "Yêu cầu cứng đối với tần suất sửa chữa thường xuyên là giá trị của gc_grace_seconds. Chạy một hoạt động sửa chữa ít nhất một lần trên mỗi nút trong khoảng thời gian này." Sửa chữa các nút
Carl G

5

Cách thức hoạt động tùy thuộc vào cấu hình của bạn, phiên bản Cassandra bạn sử dụng và cách bạn chạy lệnh sửa chữa.

Nếu bạn chỉ chạy nodetool repairtrên một nút trong một cụm, nó sẽ sửa chữa tất cả dữ liệu (phạm vi mã thông báo) mà nút đó chịu trách nhiệm và cả các nút khác chịu trách nhiệm về dữ liệu đó.

Vì vậy, ví dụ, nếu bạn chạy nodetool repairlệnh trên một nút trong một cụm nhất định:

  • Nếu bạn đang chạy một cụm ba nút với hệ số sao chép là ba, tất cả các nút sẽ sở hữu tất cả dữ liệu và do đó việc sửa chữa sẽ được thực hiện cho tất cả các nút.
  • Nếu bạn đang chạy một cụm sáu nút với hệ số sao chép là 2, dữ liệu sẽ chỉ được sửa chữa trên hai trong số sáu nút. Việc sửa chữa sẽ cần phải được bắt đầu trên hai trong số bốn nút còn lại.

Điều đó nói rằng, có thể xác định máy chủ và trung tâm dữ liệu nào sẽ thực hiện sửa chữa bằng cách sử dụng cờ -hosts-dc. Ngoài ra, nếu bạn sử dụng -prcờ (sẽ chỉ chọn phạm vi mã thông báo đầu tiên mà nút chịu trách nhiệm), bạn sẽ phải chạy nodetool repair -prtrên tất cả các nút trong cụm.

Một lá cờ khác cần ghi nhớ là -inccờ, được bao gồm trong Cassandra 2.1. Tùy chọn này sẽ chỉ sửa chữa dữ liệu mới (dữ liệu chưa được sửa chữa trước đó). Hãy cẩn thận khi dựa vào điều này, đặc biệt nếu bạn thường xuyên xóa dữ liệu. ( thêm về điều này )

Một điều khác cần ghi nhớ là cách sửa chữa mặc định được thực hiện trong Cassandra có thể khác nhau. Theo Cassandra 2.1 khi chạy, nodetool repairnó thực hiện sửa chữa tuần tự đầy đủ theo mặc định. Bạn sẽ muốn tìm kiếm những gì phiên bản của bạn làm.

Để đọc thêm về chủ đề:

https://www.datastax.com/dev/blog/repair-in-cassandra


2
câu trả lời tốt duy nhất ở đây
ruruskyi

2

Không, bạn không phải chạy trên từng nút riêng lẻ. nodetool repairchạy trên tập hợp các nút, được nêu rõ trong tài liệu .

Bạn có thể giới hạn các nút hoặc một phần dữ liệu mà bạn muốn chạy sửa chữa. Ví dụ: bạn có thể cung cấp -prtùy chọn cho phạm vi phân vùng, phạm vi mà nút nào chịu trách nhiệm, nhưng điều này sẽ phải được chạy trên toàn bộ cụm. Nhưng nếu bạn chọn -local, thì các nút trong trung tâm dữ liệu cục bộ của nút sẽ được sửa chữa.


4
Chạy nodetool repairtrên một nút là không đủ để sửa chữa tất cả dữ liệu được sao chép trên tất cả các nút trong tất cả các cấu hình. Chạy nodetool repairtrên một nút sẽ chỉ sửa chữa dữ liệu được sao chép trên nút đó. (Thêm -prtùy chọn giới hạn sửa chữa dữ liệu mà nút này là bản sao đầu tiên.) Nhưng nếu bạn có dữ liệu trong cụm không được sao chép trên nút này, thì bạn phải chạy nodetool repairtrên các nút bổ sung.
Carl G

2
"Nếu tùy chọn -pr không được chỉ định, Cassandra sẽ sửa chữa tất cả các phạm vi bản sao thuộc trách nhiệm của nút." Tài liệu sửa chữa gật đầu (Tức là không sửa chữa dữ liệu mà nút này không chịu trách nhiệm sao chép.) "Yêu cầu khó đối với tần suất sửa chữa thường xuyên là giá trị của gc_grace_seconds. Chạy một thao tác sửa chữa ít nhất một lần trên mỗi nút trong khoảng thời gian này." Sửa chữa các nút
Carl G
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.