MongoDB Replikering: Hur man skapar MongoDB Replik Set

โšก Smart sammanfattning

MongoDB Replikering sparar identiska data pรฅ mer รคn en MongoDB server, vilket skyddar mot serverfel och mรถjliggรถr lastbalansering. Grupperad MongoDB instanser bildar en replikuppsรคttning med en primรคr medlemmar som accepterar skrivningar och sekundรคra medlemmar som hanterar lรคsoperationer och redundans.

  • ๐Ÿ—„๏ธ Kรคrnkoncept: Replikering kopierar samma data till flera servrar sรฅ att informationen fรถrblir tillgรคnglig รคven om den primรคra servern gรฅr sรถnder.
  • ???? Primรคr och sekundรคr: En replikmรคngd har en primรคr medlem som accepterar skrivningar och sekundรคra medlemmar som hanterar lรคsningar.
  • ๐Ÿš€ Skapande av set: Kommandot rs.initiate() startar en replikuppsรคttning efter att den fรถrsta mongod-instansen har startats med alternativet replSet.
  • โž• Lรคgga till medlemmar: Kommandot rs.add() ansluter sekundรคra servrar, medan rs.remove() kopplar bort en medlem frรฅn konfigurationen.
  • ๐Ÿ”ง Felsรถkning: Kommandona rs.status() och rs.printReplicationInfo() visar hjรคrtslagshรคlsa och Oplog-storlek fรถr diagnos.

MongoDB Replikering: Hur man skapar MongoDB Replik Set

Vad รคr MongoDB Replikering?

Replikering kallas processen att sรคkerstรคlla att samma data รคr tillgรคnglig pรฅ mer รคn ett MongoDB Server. Detta krรคvs ibland fรถr att รถka datatillgรคngligheten.

Fรถr om din huvudsakliga MongoDB Servern gรฅr ner av nรฅgon anledning, det kommer inte att finnas tillgรฅng till data. Men om du hade data replikeras till en annan server med jรคmna mellanrum, kommer du att kunna komma รฅt data frรฅn en annan server รคven om den primรคra servern misslyckas.

Ett annat syfte med replikering รคr mรถjligheten till lastbalansering. Om det finns mรฅnga anvรคndare som ansluter till systemet, istรคllet fรถr att alla ansluter till ett system, kan anvรคndare anslutas till flera servrar sรฅ att det blir en jรคmn fรถrdelning av belastningen.

In MongoDB, flera MongoDB Servrar grupperas i uppsรคttningar som kallas replikuppsรคttningar. Replikuppsรคttningen har en primรคr server som accepterar alla skrivoperationer frรฅn klienter. Alla andra instanser som lรคggs till i uppsรคttningen efter detta kallas sekundรคra instanser, vilka primรคrt kan anvรคndas fรถr alla lรคsoperationer.

Hur man skapar en replikuppsรคttning MongoDB Lรคgga till den fรถrsta medlemmen med rs.initiate()

Som nรคmnts i fรถregรฅende avsnitt, fรถr att aktivera replikering, mรฅste vi fรถrst skapa en replikuppsรคttning av MongoDB instanser.

Lรฅt oss anta att vi i vรฅrt exempel har tre servrar som heter ServerA, ServerB och ServerC. I den hรคr konfigurationen kommer ServerA att vara vรฅr primรคra server, och ServerB och ServerC kommer att vara vรฅra sekundรคra servrar. Skรคrmdumpen nedan ger en bรคttre uppfattning om det.

Skapa Replica Set in MongoDB

Nedan รคr stegen som mรฅste fรถljas fรถr att skapa MongoDB replikuppsรคttning tillsammans med tillรคgget av den fรถrsta medlemmen till uppsรคttningen.

Steg 1) Se till att alla mongod.exe-instanser har lagts till

Se till att alla mongod.exe-instanser som ska lรคggas till i replikuppsรคttningen รคr installerade pรฅ olika servrar. Detta fรถr att sรคkerstรคlla att รคven om en server gรฅr ner, kommer de andra att vara tillgรคngliga, och dรคrmed andra instanser av MongoDB kommer att finnas tillgรคngligt.

Steg 2) Alla mongo.exe-instanser ansluter till varandra

Se till att alla mongo.exe-instanser kan ansluta till varandra. Frรฅn ServerA, utfรคrda fรถljande 2 kommandon.

mongo --host ServerB --port 27017
mongo --host ServerC --port 27017

Pรฅ samma sรคtt gรถr du samma sak frรฅn de รฅterstรฅende servrarna.

Steg 3) Starta den fรถrsta mongod.exe-instansen

Starta den fรถrsta mongod.exe-instansen med alternativet replSet. Det hรคr alternativet tillhandahรฅller en gruppping fรถr alla servrar som kommer att ingรฅ i denna replikuppsรคttning.

mongo --replSet "Replica1"

Dรคr "Replica1" รคr namnet pรฅ din replikuppsรคttning. Du kan vรคlja vilket meningsfullt namn som helst fรถr ditt replikuppsรคttningsnamn.

Steg 4) Fรถrsta servern lรคggs till i replikuppsรคttningen

Nu nรคr den fรถrsta servern har lagts till i replikuppsรคttningen รคr nรคsta steg att initiera replikuppsรคttningen genom att kรถra fรถljande kommando rs.initiate().

Steg 5) Verifiera replikuppsรคttningen

Verifiera replikuppsรคttningen genom att kรถra kommandot rs.conf() fรถr att sรคkerstรคlla att replikuppsรคttningen รคr korrekt konfigurerad.

Replikuppsรคttning: Lรคgga till en sekundรคr med rs.add()

De sekundรคra servrarna kan lรคggas till replikuppsรคttningen genom att bara anvรคnda kommandot rs.add. Detta kommando tar in namnet pรฅ de sekundรคra servrarna och lรคgger till servrarna i replikeringsuppsรคttningen.

Steg 1) Anta att du har ServerA, ServerB och ServerC, som mรฅste ingรฅ i din replikuppsรคttning, och ServerA รคr definierad som den primรคra servern i replikuppsรคttningen.

Fรถr att lรคgga till ServerB och ServerC i replikuppsรคttningen, kรถr fรถljande kommandon:

rs.add("ServerB")
rs.add("ServerC")

Replikuppsรคttning: Konfigurera om eller ta bort med rs.remove()

Fรถr att ta bort en server frรฅn konfigurationsuppsรคttningen mรฅste vi anvรคnda kommandot "rs.remove".

Steg 1) Stรคng fรถrst av den instans du vill ta bort. Detta kan gรถras genom att kรถra kommandot db.shutdownServer frรฅn mongo-skalet.

Steg 2) Anslut till den primรคra servern.

Steg 3) Anvรคnd kommandot rs.remove fรถr att ta bort den รถnskade servern frรฅn replikmรคngden. Anta att du har en replikmรคngd med ServerA, ServerB och ServerC, och du vill ta bort ServerC frรฅn replikmรคngden, kรถr kommandot:

rs.remove("ServerC")

Felsรถkning av replikuppsรคttningar

Fรถljande รคr samma sรคtt som man kan felsรถka nรคr problem uppstรฅr vid anvรคndning av replikuppsรคttningar.

  1. Se till att alla mongo.exe-instanser kan ansluta till varandra. Anta att du har 3 servrar som heter ServerA, ServerB och ServerC. Frรฅn ServerA, kรถr fรถljande 2 kommandon:
    mongo --host ServerB --port 27017
    mongo --host ServerC --port 27017
  2. Kรถr kommandot rs.status. Detta kommando anger statusen fรถr replikuppsรคttningen. Som standard skickar varje medlem meddelanden till varandra som kallas "heartbeat"-meddelanden, vilka bara indikerar att servern รคr aktiv och fungerar. Kommandot "status" hรคmtar statusen fรถr dessa meddelanden och visar om det finns nรฅgra problem med nรฅgra medlemmar i replikuppsรคttningen.
  3. Kontrollera storleken pรฅ Oploggen. Oploggen รคr en samling i MongoDB som lagrar historien om skriverier som gjordes till MongoDB databas. MongoDB anvรคnder sedan denna Oplog fรถr att replikera skrivningarna till de andra medlemmarna i replikuppsรคttningen. Fรถr att kontrollera Oplog, anslut till den nรถdvรคndiga medlemsinstansen och kรถr kommandot rs.printReplicationInfo. Detta kommando visar storleken pรฅ loggen och hur lรคnge den kan hรฅlla transaktioner i sin loggfil innan den blir full.

Vanliga frรฅgor

Ja. AI-assistenter kan generera startalternativen fรถr mongod, konfigurationen rs.initiate() och kommandona rs.add() fรถr en replikuppsรคttning. Granska alltid vรคrdnamn, portar och medlemsprioriteringar innan du tillรคmpar konfigurationen pรฅ produktionsservrar.

Ja. AI-drivna รถvervakningsverktyg kan lรคsa rs.status() och Oplog-mรคtvรคrden fรถr att flagga sekundรคrer som hamnar efter primรคrdiskarna. De kan fรถreslรฅ orsaker som nรคtverkslatens eller lรฅngsamma diskar, men ingenjรถrer bรถr bekrรคfta innan de agerar.

MongoDB rekommenderar ett udda antal rรถstberรคttigade medlemmar, vanligtvis tre, sรฅ att val kan nรฅ en majoritet. Om endast tvรฅ datanoder รคr รถverkomliga kan en skiljedomare lรคggas till fรถr att bryta oavgjort utan att lagra data.

Nรคr primรคrvalet blir oรฅtkomligt hรฅller de รฅterstรฅende medlemmarna ett val och befordrar automatiskt en berรคttigad sekundรคrval till primรคrvalet. Skrivandet รฅterupptas nรคr ett nytt primรคrval har valts, hรฅllping applikationen tillgรคnglig med minimal driftstopp.

Sammanfatta detta inlรคgg med: