Tidak umum untuk melihat masalah seperti ini, tetapi saya telah melihatnya terjadi secara sporadis.
Tindakan perbaikan terbaik yang harus dilakukan di sini adalah menghentikan bagian utama dari pecahan TO yang direferensikan yang akan menghapus penghapusan latar belakang. Utas penghapusan hanya ada di primer saat ini (mereka akan direplikasi dari primer itu melalui oplog
saat mereka diproses). Saat Anda menurunkannya, itu menjadi sekunder, utas tidak bisa lagi menulis dan Anda mendapatkan primer baru tanpa penghapusan yang tertunda. Anda mungkin ingin memulai ulang primer sebelumnya setelah turun untuk menghapus kursor lama, tetapi biasanya tidak mendesak.
Setelah Anda melakukan ini, Anda akan ditinggalkan dengan sejumlah besar dokumen yatim piatu, yang dapat dialamatkan dengan cleanUpOrphaned
perintah
yang saya sarankan berjalan pada waktu lalu lintas rendah (jika Anda memiliki waktu seperti itu).
Untuk referensi, jika ini adalah masalah yang berulang, maka kemungkinan pendahuluan sedikit kesulitan dalam hal memuat, dan untuk menghindari antrian penghapusan, Anda dapat mengatur _waitForDelete
pilihan
untuk penyeimbang menjadi benar (salah secara default) sebagai berikut:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
Ini berarti bahwa setiap migrasi lebih lambat (mungkin secara signifikan) tetapi tidak akan menyebabkan akumulasi penghapusan latar belakang.