Att göra korrekta säkerhetskopior av databasen är en kritisk uppgift. Förutom att ställa in högtillgänglighetsarkitekturen för din MongoDB för databastjänster, måste du också ha säkerhetskopior av dina databaser för att säkerställa tillgången på data i händelse av en katastrof. Till exempel, om du av misstag raderar vissa data från en produktionsdatabas, är det enda sättet att återställa data från databassynpunkt att återställa från säkerhetskopia.
ClusterControl började nyligen stödja en ny säkerhetskopieringsmetod, kallad Percona Backup for MongoDB, utvecklad av Percona. Den kan köra konsekventa säkerhetskopior för MongoDB Replica Sets och Sharded Clusters.
I den här bloggen kommer vi att ta en titt på säkerhetskopieringshantering för MongoDB Replica Sets och Sharded Clusters.
MongoDB Säkerhetskopiering i mycket tillgänglig arkitektur
ClusterControl stöder tre säkerhetskopieringsmetoder, som är mongodump, mongodb consistent och Percona Backup for Mongodb. Den konsekventa säkerhetskopieringen av mongodb använder verktyget mongodump som säkerhetskopieringsmetod, och säkerhetskopian kan återställas med hjälp av mongorestore.
Den senaste säkerhetskopieringsmetoden som stöds är Percona Backup för Mongodb för konsekventa säkerhetskopior av replikuppsättningar och delade kluster, den kräver att en agent körs på varje nod- eller replikuppsättning eller skärvnoder och hanteringsnoder för skärvkluster som beskrivs här.
Konfigurera och schemalägga konsekvent säkerhetskopiering med Percona Backup för Mongodb i ClusterControl är mycket enkelt. Gå till Backup-sidan och konfigurera sedan Percona Backup för Mongodb. Förutsättningen är att ha Percona Backup för MongoDB igång på varje nod, som även kan installeras från ClusterControl.
Vi måste installera Percona Backup for MongoDB-agenten först innan vi kan schemalägga säkerhetskopiering enligt nedan:
Och konfigurera sedan säkerhetskopieringskatalogen. Observera att säkerhetskopieringskatalogen måste vara en delad disk som har monterats på alla noder med exakt samma sökväg som nedan:
Om du inte har någon form av delad disk redo i systemet, du kan använda NFS för att åstadkomma detta. För att konfigurera NFS-servern behöver vi en dedikerad server / virtuell maskin med tillräckligt med ledigt utrymme för att lagra säkerhetskopian. Installera nfs-utils och nfs-utils-lib-biblioteket på servern enligt nedan (förutsatt att vi använder CentOS-baserade):
[[email protected] ~]# yum install nfs-utils nfs-utils-lib
[[email protected] ~]# yum install portmap
Och starta portmap- och nfs-tjänsterna.
[[email protected] ~]# /etc/init.d/portmap start
[[email protected] ~]# /etc/init.d/nfs start
Lägg sedan till nya poster i /etc/exports enligt nedan:
[[email protected] ~]# vi /etc/exports
/backup 10.10.10.11(rw,sync,no_root_squash)
På databasnoden behöver vi bara montera lagringsdisken som delad lagring.
Sista sak, klicka bara på installationsknappen och det kommer att utlösa ett nytt jobb för att konfigurera agenten på varje nod.
När alla PBM ggent är installerade kan vi konfigurera säkerhetskopieringsmetoden för kluster enligt nedan:
Fysisk vs logisk säkerhetskopiering
MongoDB backup stöder logisk backup och fysisk backup. Metoden för logisk säkerhetskopiering med hjälp av mongodump-verktyget ingår när du installerar mongodb-paketet. Mongodump behöver en åtkomst till din mongodb-databas, så den kräver autentiseringsåtkomst för mongodump med behörighet för säkerhetskopiering av roller och måste ha tillstånd att hitta åtgärd för att säkerhetskopiera databasen.
Det fungerar för BSON-datadump-format. Mongodumpen ansluter till din databas med inloggningsuppgifter, läser hela data i din databas och dumpar data till filer. Eftersom det är en enda gängad process kommer det att ta längre tid för säkerhetskopieringen, särskilt med en stor databas. Mongodump upprätthåller inte atomiciteten för transaktioner över skärvorna, det är därför den inte kan användas som en säkerhetskopieringsstrategi för mongodb version 4.2 och senare i ett splittrat kluster. Percona Backup för MongoDB är en logisk säkerhetskopia men den stöder konsekvent säkerhetskopiering av kluster.
Fysisk säkerhetskopiering i MongoDB fungerar genom ögonblicksbilden av mongodb-filsystemen, den kopierar de underliggande mongodb-filerna till en annan plats som bassäkerhetskopiering av din mongodb-databas. Filsystemets ögonblicksbild är operativsystem om du använder LVM (Logical Volume Manager) som programvara för att hantera din disklayout och enhet, eller programvaruenhet t.ex. Veritas eller NetApp Backup. Du måste aktivera journalföring, förändringsaktiviteten logga i mongodb innan du kör ögonblicksbilden av filsystemet för att göra säkerhetskopieringen konsekvent.
Förutom filsystemets ögonblicksbild kan du också använda kommandot cp eller rsync för att kopiera MongoDB-datafiler, men du måste stoppa skrivprocessen till mongodb eftersom processen att kopiera datafiler inte är en atomär operation. Säkerhetskopieringen kan inte användas för Point in Time Recovery i Replica Sets eller Sharded Cluster-arkitekturer.
Percona Backup för MongoDB består av två komponenter, pbm-agenten som måste installeras på varje nod och pbm som ett kommandoradsgränssnitt för att interagera och köra backuperna. Pbm-agenten koordinerar mellan databasnoderna och köra backup- och återställningsprocessen. Pbm-agenten kommer att bestämma den bästa noden för att ta säkerhetskopian.
PITR-säkerhetskopia
I många databassystem är det vanligt att använda en kontrollpunkt för att spola in data till disken. MongoDB använder WiredTiger-lagringsmotorn som standardlagringsmotor och använder även kontrollpunkter för att ge en konsekvent bild av data. Inte nog med det, kontrollpunkten i MongoDB kan användas för att återställa från den senaste kontrollpunkten. Journaleringen fungerar mellan varje kontrollpunkt, journalisering krävs för att återhämta sig från oväntade avbrott som inträffar när som helst mellan kontrollpunkterna. Journalföring garanterar att skrivoperationerna loggas till disk, MongoDB kommer att skapa en journalpost för varje förändring, inklusive byte som ändrades och diskens plats.
Mongodump och mongorestore kan användas för säkerhetskopiering av tidpunkten för återställning, det finns ett alternativ att utnyttja oploggen. Oploggen är en begränsad samling i MongoDB som spårar alla ändringar i samlingar för varje skrivtransaktion (t.ex. infoga, uppdatera, ta bort). Så om du vill göra punktåterställning måste du återställa från den senaste fullständiga säkerhetskopian och även använda oplog-filen för att tillämpa ändringarna på den exakta tidpunkten du vill återställa. Ett annat verktyg som kan användas är Percona Backup för MongoDB, processen liknar mongodump, vi måste återställa från säkerhetskopian och sedan använda oploggen.
Slutsats
Det är viktigt att ta en konsekvent säkerhetskopia, särskilt i klustrade MongoDB-inställningar (replika uppsättning eller fragmenterad kluster). ClusterControl ger ett enkelt sätt att konfigurera Percona Backup för MongoDB i ditt kluster och schemalägga dina säkerhetskopior.