Câu trả lời:
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 repair
trê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 -pr
cờ, đ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.
-pr
trên mọi nút, nó sẽ bao phủ toàn bộ không gian phím.
-pr
cờ.
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 repair
trê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 repair
lệnh trên một nút trong một cụm nhất định:
Đ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
và -dc
. Ngoài ra, nếu bạn sử dụng -pr
cờ (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 -pr
trên tất cả các nút trong cụm.
Một lá cờ khác cần ghi nhớ là -inc
cờ, đượ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 repair
nó 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ủ đề:
Không, bạn không phải chạy trên từng nút riêng lẻ. nodetool repair
chạ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 -pr
tù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.
nodetool repair
trê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 repair
trên một nút sẽ chỉ sửa chữa dữ liệu được sao chép trên nút đó. (Thêm -pr
tù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 repair
trên các nút bổ sung.
-pr
mọi nút, nó có bao gồm toàn bộ không gian phím không?