
Halo, kalau kamu merasa tulisan saya ngebantu kamu, kamu bisa ucapkan terima kasih lewat saweria .
If you feel this website help you, you can donate at saweria .
Awalan
Beberapa kondisi saat menjalankan compact di replica set:
Replica set terdiri dari 3 server (replicaset1, replicaset2 dan replicaset3)
Server replicaset1 berperan sebagai primary. replicaset2 dan replicaset3 sebagai secondary
Compact dijalankan terlebih dahulu di secondary (replicaset2 & replicaset3), lalu
Demote replicaset1 sebagai secondary, promote replicaset2 sebagai primary
Jalankan compact di replicaset1
Catatan
Waktu
compactbervariasi, tergantung dari collection size dan spek serverAmankah menjalankan
compactdi primary? Saya belum pernah, saya lebih pilih melakukan cara di atas
Run compact di MongoDB Replica Set Production

Ada Pesan compact Bakal Bikin Slow Operation
Do with your own risk!!!
Pertama jalankan
compactdi secondaryuse testDbName; #compact all collection db.getCollectionNames().forEach(function (collectionName) { print('Compacting: ' + collectionName); db.runCommand({ compact: collectionName }); }); #compact only one collection db.runCommand({ compact: collectionName }); #jika ada warning rs.secondaryOk(); use testDbName; #compact all collection db.getCollectionNames().forEach(function (collectionName) { print('Compacting: ' + collectionName); db.runCommand({ compact: collectionName }); });Setelah selesai jalankan di secondary, kita akan demote replicaset1 sebagai secondary, promote replicaset2 sebagai primary
a. Masuk ke replicaset3, cegah server ini menjadi primary dengan cara
rs.freeze(120)b. Masuk ke replicaset1, demote ke secondary dengan cara
rs.stepDown(120)c. Cek dengan
rs.status(), harusnya replicaset2 yang menjadi primary sekarangJalankan
compactdi replicaset3
Referensi:
