Huvudfunktionen hos en replikuppsättning är att tillhandahålla dataredundans och hög tillgänglighet för din MongoDB-distribution. Det vill säga, om den primära noden i en replikuppsättning gick ner av någon anledning, skulle en sekundär omedelbart ta över som den nya primära (i genomsnitt inom ~10 sekunder). Se replikering för mer information om detta ämne.
Officiella MongoDB-drivrutiner är medvetna om denna replikuppsättningsvalhändelse och skulle ge automatisk återanslutning och driftförsök till den nya primära. Ur appens synvinkel hände ingenting på databassidan.
En annan fördel med att använda en replikuppsättning med flera sekundärer är möjligheten till noll stilleståndsuppgradering/underhåll på ett rullande sätt. Detta kan göras genom att ta en sekundär offline, utföra underhåll på den, sedan utföra underhåll på de andra sekundärerna, och slutligen avveckla den primära och utföra underhåll på den. Återigen eftersom officiella MongoDB-drivrutiner är medvetna om dessa händelser, kan du tekniskt utföra underhåll på en livedatabas med mycket minimal påverkan och ingen stilleståndstid för appen.
Detta är en annan filosofi jämfört med en monolitisk databasserver, där det bara finns en riktig stor server. Även om det finns vissa fördelar med en monolitisk distribution (vilket är en annan diskussion igen :) ), var MongoDB utformad som en feltolerant distribuerad databas i åtanke. En omedelbar nackdel med en enskild server är att servern måste vara uppe till 100 % hela tiden, annars störs appen. En replikuppsättning har utformats så att din app kan ha 100 % drifttid utan att sätta press på enskilda servrar som måste ha 100 % drifttid.
Som en bonus kan en replikuppsättning kunna ge lässkalbarhet genom att ställa in drivrutinen att läsa från sekundärer (skriver måste alltid gå till primär). Observera att det bör vara en noggrann design om du vill göra sekundära läsningar, eftersom detta potentiellt kan störa den höga tillgänglighetsaspekten om det missbrukas.
Sammanfattningsvis kan en replikuppsättning ge:
- Hög tillgänglighet och feltolerans
- Inget driftstopp
- Datareundans för att skala läsningar
utan att kräva att hårdvaran är 100 % tillförlitlig. Det är därför en replikuppsättning rekommenderas starkt i en prod-distribution.
Se Replica Set Deployment Architectures för mer detaljerade överväganden om implementering av replikuppsättningar.