At lave korrekte sikkerhedskopier af databasen er en kritisk opgave. Udover at indstille den høje tilgængelighedsarkitektur på din MongoDB til databasetjenester, skal du også have sikkerhedskopier af dine databaser for at sikre tilgængeligheden af data i tilfælde af en katastrofe. Hvis du f.eks. ved et uheld sletter nogle data fra en produktionsdatabase, er den eneste måde at gendanne dataene fra databasens synspunkt på at gendanne fra backup.
For nylig begyndte ClusterControl at understøtte en ny backupmetode, kaldet Percona Backup for MongoDB, udviklet af Percona. Det kan køre konsekvente sikkerhedskopier til MongoDB Replica Sets og Sharded Clusters.
I denne blog vil vi se på backup-administration for MongoDB Replica Sets og Sharded Clusters.
MongoDB-sikkerhedskopi i meget tilgængelig arkitektur
ClusterControl understøtter 3 backupmetoder, som er mongodump, mongodb consistent og Percona Backup for Mongodb. Den konsekvente mongodb-sikkerhedskopi bruger mongodump-værktøjet som backupmetode, og sikkerhedskopien kan gendannes ved hjælp af mongorestore.
Den seneste understøttede sikkerhedskopieringsmetode er Percona Backup for Mongodb til konsistente og punktvise sikkerhedskopier af replikasæt og splittede klynger, det kræver, at en agent kører på hver node eller replikasæt eller shard noder og administrationsknuder for skårklynger som beskrevet her.
Konfiguration og planlægning af konsekvent sikkerhedskopiering ved hjælp af Percona Backup for Mongodb i ClusterControl er meget let. Gå til Backup-siden, og konfigurer derefter Percona Backup for Mongodb. Forudsætningen er at have Percona Backup til MongoDB kørende på hver node, som også kan installeres fra ClusterControl.
Vi skal først installere Percona Backup for MongoDB-agenten, før vi kan planlægge sikkerhedskopiering som nedenfor:
Og konfigurer derefter backup-mappen. Bemærk venligst, at backup-mappen skal være en delt disk, der er monteret på alle noder med nøjagtig den samme monterede sti som nedenfor:
Hvis du ikke har nogen form for delt disk klar i systemet, du kan bruge NFS til at opnå dette. For at konfigurere NFS-serveren har vi brug for en dedikeret server/virtuel maskine med nok ledig plads til at gemme sikkerhedskopien. Installer nfs-utils og nfs-utils-lib biblioteket på serveren som nedenfor (forudsat at vi bruger CentOS baseret):
[[email protected] ~]# yum install nfs-utils nfs-utils-lib
[[email protected] ~]# yum install portmap
Og start portmap- og nfs-tjenesterne.
[[email protected] ~]# /etc/init.d/portmap start
[[email protected] ~]# /etc/init.d/nfs start
Tilføj derefter nye poster i /etc/exports som vist nedenfor:
[[email protected] ~]# vi /etc/exports
/backup 10.10.10.11(rw,sync,no_root_squash)
På databasenoden skal vi blot montere lagerdisken som delt lager.
Sidste ting, klik bare på installationsknappen, og det vil udløse et nyt job for at konfigurere agenten på hver node.
Når alle PBM ggent er installeret, kan vi konfigurere sikkerhedskopieringsmetoden for klynge som nedenfor:
Fysisk vs logisk sikkerhedskopiering
MongoDB backup understøtter logisk backup og fysisk backup. Metoden til logisk backup ved at bruge mongodump-værktøjet er inkluderet, når du installerer mongodb-pakken. Mongodump har brug for en adgang til din mongodb-database, så den kræver legitimationsadgang for mongodump med privilegier for backup-roller og skal have en tildelt find-handling for at sikkerhedskopiere databasen.
Det virker for BSON-datadump-formater. Mongodumpen vil oprette forbindelse til din database med angivet legitimationsoplysninger, læse alle data i din database og dumpe dataene i filer. Da det er en enkelt trådet proces, vil det tage længere tid at sikkerhedskopiere, især med en stor databasestørrelse. Mongodump opretholder ikke atomiciteten af transaktioner på tværs af shards, derfor kan den ikke bruges som backup-strategi for mongodb version 4.2 og nyere i en sharded cluster. Percona Backup til MongoDB er en logisk backup, men den understøtter konsekvente backups af klynger.
Fysisk sikkerhedskopiering i MongoDB fungerer gennem snapshot af mongodb-filsystemerne, det kopierer de underliggende mongodb-filer til en anden placering som basis backup af din mongodb-database. Filsystemets snapshot er operativsystem, hvis du bruger LVM (Logical Volume Manager) som software til at styre dit disklayout og din enhed, eller softwareapparat f.eks. Veritas eller NetApp Backup. Du skal aktivere journalføring, ændringsaktivitetslog i mongodb, før du kører filsystemets snapshot for at gøre sikkerhedskopien konsistent.
Udover filsystemets snapshot kan du også bruge kommandoen cp eller rsync til at kopiere MongoDB-datafiler, men du er nødt til at stoppe skriveprocessen til mongodb, fordi processen med at kopiere datafiler ikke er en atomoperation. Sikkerhedskopien kan ikke bruges til Point in Time Recovery i Replica Sets eller Sharded Cluster-arkitekturer.
Percona Backup for MongoDB består af to komponenter, pbm-agenten, der skal installeres på hver node, og pbm'en som en kommandolinjegrænseflade for at interagere og køre sikkerhedskopierne. Pbm-agenten koordinerer mellem databasenoderne og kører backup- og gendannelsesprocessen. Pbm-agenten bestemmer den bedste node til at tage backup.
PITR-sikkerhedskopi
I mange databasesystemer er det almindeligt at bruge et kontrolpunkt til at skylle data ind i disken. MongoDB bruger WiredTiger-lagringsmotor som en standardlagringsmotor og bruger også kontrolpunkter til at give et ensartet overblik over data. Ikke nok med det, checkpointet i MongoDB kan bruges til at gendanne fra det sidste checkpoint. Journalføringen fungerer mellem hvert kontrolpunkt, journalisering er påkrævet for at komme sig efter uventede udfald, der sker til enhver tid mellem kontrolpunkterne. Journalføring garanterer, at skriveoperationerne logges på disken, MongoDB vil oprette en journalpost for hver ændring, inklusive de bytes, der ændrede sig og diskens placering.
Mongodump og mongorestore kan bruges til sikkerhedskopiering af gendannelsestidspunkt, der er mulighed for at udnytte oploggen. Oploggen er en begrænset samling i MongoDB, som sporer alle ændringer i samlinger for hver skrivetransaktion (f.eks. indsæt, opdater, slet). Så hvis du vil foretage gendannelse på tidspunktet, skal du gendanne fra den sidste fulde sikkerhedskopi og også bruge oplog-filen til at anvende ændringerne på det nøjagtige tidspunkt, du vil gendanne. Et andet værktøj, der kan bruges, er Percona Backup til MongoDB, processen ligner mongodump, vi skal gendanne fra sikkerhedskopien og derefter anvende oploggen.
Konklusion
Det er vigtigt at tage en konsekvent sikkerhedskopi, især i klyngede MongoDB-opsætninger (replikasæt eller sharded cluster). ClusterControl giver en nem måde at konfigurere Percona Backup for MongoDB i din klynge og planlægge dine sikkerhedskopier.