Vấn đề này không phổ biến nhưng tôi đã thấy nó xảy ra không thường xuyên.
Biện pháp khắc phục hậu quả tốt nhất cần thực hiện ở đây là hạ cấp phân đoạn chính của phân đoạn TO được tham chiếu để xóa các thao tác xóa nền. Chuỗi xóa chỉ tồn tại trên chuỗi chính hiện tại (chúng sẽ được sao chép từ chuỗi chính đó qua oplog
khi chúng được xử lý). Khi bạn hạ nó xuống, nó sẽ trở thành thứ yếu, các chuỗi không còn có thể viết được nữa và bạn sẽ có được một chuỗi chính mới mà không bị xóa đang chờ xử lý. Bạn có thể muốn khởi động lại trang chính cũ sau khi bước xuống để xóa các con trỏ cũ, nhưng điều này thường không khẩn cấp.
Khi bạn làm điều này, bạn sẽ để lại một số lượng lớn các tài liệu mồ côi, có thể là địa chỉ bằng cleanUpOrphaned
lệnh
mà tôi muốn khuyên bạn nên chạy vào những thời điểm lưu lượng truy cập thấp (nếu bạn có những thời điểm như vậy).
Để tham khảo, nếu đây là một vấn đề lặp lại, thì có thể các bầu cử sơ bộ đang gặp khó khăn một chút về tải và để tránh xếp hàng xóa, bạn có thể đặt _waitForDelete
tùy chọn
cho bộ cân bằng thành true (sai theo mặc định) như sau:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
Điều này có nghĩa là mỗi lần di chuyển chậm hơn (có lẽ là đáng kể) nhưng sẽ không gây ra tích lũy các lần xóa nền.