sql >> Databasteknik >  >> NoSQL >> MongoDB

En recension av MongoDB Backup Options

Databassäkerhetskopiering är inget annat än ett sätt att skydda eller återställa data. Det är processen att lagra drifttillstånd, arkitektur och data för din databas. Det kan vara mycket användbart i situationer med tekniskt avbrott eller katastrof. Så det är viktigt att behålla säkerhetskopian av din databas och att din databas har en bra och enkel process för säkerhetskopiering.

MongoDB tillhandahåller flera verktyg/tekniker för att enkelt säkerhetskopiera dina databaser.

I den här artikeln kommer vi att diskutera några av MongoDB:s bästa arbetsflöden för säkerhetskopiering och återställning.

Generellt finns det tre vanligaste alternativen för att säkerhetskopiera din MongoDB-server/kluster.

  • Mongodump/Mongorestore
  • MongoDB Cloud Manager
  • Ögonblicksbilder av databasen

Förutom dessa allmänna alternativ finns det andra sätt att säkerhetskopiera din MongoDB. Vi kommer också att diskutera alla dessa alternativ i den här artikeln. Låt oss komma igång.

MongoDump/MongoRestore

Om du har en liten databas (<100GB) och du vill ha full kontroll över dina säkerhetskopior, då är Mongodump och Mongorestore dina bästa alternativ. Dessa är mongo-skalkommandon som kan användas för att manuellt säkerhetskopiera din databas eller samlingar. Mongodump dumpar all data i binärt JSON(BSON)-format till den angivna platsen. Mongorestore kan använda dessa BSON-filer för att återställa din databas.

Säkerhetskopiera en hel databas

$ sudo mongodump --db mydb --out /var/backups/mongo

Utdata:

2018-08-20T10:11:57.685-0500    writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500    writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500    done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500    writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson

I detta kommando är det viktigaste argumentet --db. Den anger namnet på databasen som du vill säkerhetskopiera. Om du inte anger detta argument kommer Mongodump-kommandot att säkerhetskopiera alla dina databaser vilket kan vara mycket intensiv process.

Säkerhetskopiera en enda samling

$ mongodump -d mydb -o /var/backups/mongo --collection users

Detta kommando kommer endast att säkerhetskopiera användares samling i mydb-databasen. Om du inte ger det här alternativet kommer det att säkerhetskopiera all samling i databasen som standard.

Ta regelbundna säkerhetskopior med Mongodump/Mongorestore

Som standard bör du göra regelbundna säkerhetskopior av din MongoDB-databas. Anta att du vill ta en säkerhetskopia varje dag klockan 03:03, så i ett Linux-system kan du göra detta genom att lägga till en cron-post i crontab.

$ sudo crontab -e

Lägg till denna rad i crontab:

3 3 * * * mongodump --out /var/backups/mongo

Återställ en hel databas

För att återställa databasen kan vi använda Mongorestore-kommandot med --db-alternativet. Den kommer att läsa BSON-filerna som skapats av Mongodump och återställa din databas.

$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Utdata

2018-07-20T12:44:30.876-0500    building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500    reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500    restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500    restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500    finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500    done

Återställ en hel samling

För att återställa en enda samling från db kan du använda följande kommando:

$ mongorestore -d mydb -c users mydb/users.bson

Om din samling säkerhetskopieras i JSON-format istället för BSON kan du använda följande kommando:

$ mongoimport --db mydb --collection users --file users.json --jsonArray

Fördelar

  • Mycket enkel att använda
  • Du har full tillgång till din säkerhetskopia
  • Du kan lägga dina säkerhetskopior var som helst som NFS-resurser, AWS S3 etc.

Nackdelar

  • Varje gång kommer det att ta en fullständig säkerhetskopia av databasen, inte bara skillnaden.
  • För stora databaser kan det ta timmar att säkerhetskopiera och återställa databasen.
  • Det är inte en tidpunkt som standard, vilket innebär att om din data ändras när du säkerhetskopierar den kan din säkerhetskopiering leda till inkonsekvens. Du kan använda alternativet --oplog för att lösa detta problem. Den tar en ögonblicksbild av databasen i slutet av mongodump-processen.

MongoDB Ops Manager

Ops Manager är en hanteringsapplikation för MongoDB som körs i ditt datacenter. Den säkerhetskopierar kontinuerligt dina data och tillhandahåller punkt-i-tid återställningsprocesser för din databas. Inom denna applikation finns det en agent som ansluter till dina MongoDB-instanser. Den kommer först att utföra en första synkronisering för att säkerhetskopiera databasens nuvarande tillstånd. Agenten fortsätter att skicka den komprimerade och krypterade oplogdatan till Ops Manager så att du kan ha en kontinuerlig säkerhetskopiering. Med hjälp av dessa data kommer Ops Manager att skapa ögonblicksbilder av databasen. Det kommer att skapa en ögonblicksbild av din databas var 6:e ​​timme och oplogdata kommer att lagras i 24 timmar. Du kan konfigurera ögonblicksbildschemat när som helst med hjälp av Ops Manager.

Fördelar

  • Det är en tidpunkt som standard
  • Påverkar inte produktionsprestandan förutom vid initial synkronisering
  • Stöd för konsekventa ögonblicksbilder av fragmenterade kluster
  • Flexibilitet att utesluta icke-kritiska samlingar

Nackdelar

  • Nätverkslatens ökar med ögonblicksbildens storlek medan databasen återställs.

MongoDB Cloud Manager

MongoDB Cloud Manager är en molnbaserad backuplösning som tillhandahåller punkt-i-tid återställning, kontinuerlig och online backup-lösning som en helt hanterad tjänst. Du kan helt enkelt installera Cloud Manager-agenten för att hantera säkerhetskopiering och återställning av din databas. Det kommer att lagra dina säkerhetskopierade data i MongoDB-molnet.

Fördelar

  • Mycket enkel att använda. Bra GUI.
  • Kontinuerlig säkerhetskopiering av frågor och oplog.

Nackdelar

  • Ingen kontroll över säkerhetskopierade data. Den lagras i MongoDB-molnet.
  • Kostnaden beror på storleken på data och mängden oplogändringar.
  • Återställningsprocessen är långsam.

Snapshot-databasfiler

Detta är den enklaste lösningen för att säkerhetskopiera din databas. Du kan kopiera alla underliggande filer (datainnehåll/katalog) och placera dem på valfri säker plats. Innan du kopierar alla filer bör du stoppa alla pågående skrivoperationer till en databas för att säkerställa datakonsistensen. Du kan använda kommandot db.fsyncLock() för att stoppa alla skrivoperationer.

Det finns två typer av ögonblicksbilder:en är ögonblicksbilder på molnnivå och en annan är ögonblicksbilder på OS-nivå.

Om du lagrar databasdata hos en molntjänstleverantör som AWS måste du ta AWS EBS ögonblicksbilder för säkerhetskopiering. Om du däremot lagrar DB-filer i inbyggt operativsystem som Linux måste du ta LVM-ögonblicksbilder. LVM-ögonblicksbilder är inte bärbara till andra maskiner. Så molnbaserade ögonblicksbilder är bättre än OS-baserade ögonblicksbilder.

Fördelar

  • Lätt att använda.
  • Full kontroll över ögonblicksbilder. Du kan flytta den till vilket datacenter som helst.
  • Dessa ögonblicksbilder är olika ögonblicksbilder som endast lagrar skillnaderna från tidigare ögonblicksbilder.
  • Du behöver inte ladda ner ögonblicksbilderna för att återställa din databas. Du kan bara skapa en ny volym från din ögonblicksbild.

Nackdelar

  • Med den här metoden kan du bara återställa din databas vid brytpunkter.
  • Underhåll blir ibland väldigt komplicerat.
  • För att koordinera säkerhetskopieringar över alla replikuppsättningar (i sharded system) behöver du ett speciellt devops-team.

MongoDB Consistent Backup-verktyg

MongoDB konsekvent säkerhetskopiering är ett verktyg för att utföra konsekventa säkerhetskopieringar av MongoDB-kluster. Det kan säkerhetskopiera ett kluster med en eller flera skärvor till en enda punkt i databasen. Den använder Mongodump som standardmetod för säkerhetskopiering. Kör följande kommando för att säkerhetskopiera med det här verktyget.

$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Alla säkerhetskopior som genereras av dessa kommandon är MongoRestore-kompatibla. Du kan använda mongorestore-kommandot med --oplogReplay-alternativet för att säkerställa konsekvens.

$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Fördelar

  • Helt öppen källkod
  • Fungerar med fragmenterat kluster
  • Tillhandahåller ett alternativ för fjärrsäkerhetskopiering som Amazon S3
  • Automatisk skalning tillgänglig
  • Mycket lätt att installera och köra

Nackdel

  • Inte helt mogen produkt
  • Väldigt få alternativ för fjärröverföring
  • Stöder inte datakryptering innan du sparar på disk
  • Det officiella kodarkivet saknar korrekt testning

ClusterControl Backup

ClusterControl är ett allt i ett automatiserat databashanteringssystem. Det låter dig övervaka, distribuera, hantera och skala dina databaskluster med lätthet. Den stöder MySQL, MongoDB, PostgreSQL, Percona XtraDB och Galera Cluster. Denna programvara automatiserar nästan alla databasoperationer som att distribuera ett kluster, lägga till eller ta bort en nod från vilket kluster som helst, kontinuerliga säkerhetskopieringar, skala klustret etc. Alla dessa saker kan du göra från ett enda gränssnitt från ClusterControl-systemet.

ClusterControl tillhandahåller ett mycket trevligt gränssnitt för MongoDB backuphantering med stöd för schemaläggning och kreativa rapporter. Det ger dig två alternativ för säkerhetskopieringsmetoder.

  1. Mongodump
  2. Mongodb konsekvent säkerhetskopiering

Så användare kan välja vilket alternativ som helst efter deras behov. Det här verktyget tilldelar ett unikt ID till alla säkerhetskopior och lagrar det under denna sökväg:ClusterControl> Inställningar> Säkerhetskopiering> BackupID. Om den angivna noden inte är aktiv när säkerhetskopieringen tas, kommer verktyget automatiskt att hitta den levande noden från klustret och fortsätta säkerhetskopieringen på den noden. Det här verktyget ger också ett alternativ för att schemalägga säkerhetskopieringarna med någon av ovanstående säkerhetskopieringsmetoder. Du kan aktivera/inaktivera alla schemaläggningsjobb genom att bara växla mellan en knapp. ClusterControl kör säkerhetskopieringsprocessen i bakgrunden så att den inte påverkar de andra jobben i kön.

Fördelar

  • Lätt installation och mycket enkel att använda
  • Flera alternativ för säkerhetskopieringsmetoder
  • Säkerhetskopiering är mycket enkelt med ett enkelt GUI-formulär
  • Automatisk säkerhetskopiering
  • Säkerhetskopieringsrapporter med status

Nackdel

  • Båda säkerhetskopieringsmetoderna använder internt mongodump, som har vissa problem med att hantera mycket stora databaser.

Slutsats

En bra säkerhetskopieringsstrategi är en kritisk del av alla databashanteringssystem. MongoDB erbjuder många alternativ för säkerhetskopiering och återställning/återställning. Tillsammans med en bra säkerhetskopieringsmetod är det mycket viktigt att ha flera repliker av databasen. Detta hjälper till att återställa databasen utan att ha stilleståndstid på ens en sekund. Ibland för större databaser kan säkerhetskopieringsprocessen vara mycket resurskrävande. Så din server bör vara utrustad med bra CPU, RAM och mer diskutrymme för att hantera denna typ av belastning. Säkerhetskopieringsprocessen kan öka belastningen på servern på grund av dessa skäl, så du bör köra säkerhetskopieringsprocessen under nätterna eller under högtrafik.


  1. MongoDB jokertecken i nyckeln till en fråga

  2. MongoDb via jndi

  3. Räknar socket.io-användare över horisontella servrar

  4. MongoDB map()