Denne blog blev opdateret den 27/11/18 og 29/11/18 for at foretage ændringer som anbefalet af vores fantastiske kommentatorer!
Som med enhver anden komponent i en virksomhed, er databaser ekstremt vigtige dens indre funktioner.
Uanset om det er kernen i virksomheden eller blot en anden komponent, bør databaser sikkerhedskopieres regelmæssigt og opbevares på sikre steder til mulig fremtidig gendannelse.
Skal jeg sikkerhedskopiere til skyen?
En generel regel er at have mindst 3 kopier af noget af værdi og at gemme disse sikkerhedskopier forskellige steder. Sikkerhedskopier på det samme drev er ubrugelige, hvis selve drevet dør, sikkerhedskopier af samme vært er også i fare, hvis værten går ned, og sikkerhedskopier af samme bygning er også i fare, hvis bygningen brænder ned (drastisk og usandsynligt, men muligt).
Cloud backups tilbyder en nem løsning til behovet for off-site backups uden at skulle spinne ny hardware op på en sekundær placering. Der er mange forskellige cloud-tjenester, der tilbyder backup-lagring, og valget af den rigtige vil afhænge af backup-behov, størrelseskrav, omkostninger og sikkerhed.
Fordelene ved at have sikkerhedskopier i skyen er mange, men hovedsageligt drejer det sig om at have disse sikkerhedskopier gemt et andet sted end hoveddatabasen, hvilket giver os mulighed for at have et sikkerhedsnet i tilfælde af en katastrofegendannelse. Selvom vi ikke vil gå i detaljer om, hvordan man opsætter hver af disse sikkerhedskopieringsmuligheder, vil vi udforske nogle forskellige ideer og konfigurationer til sikkerhedskopiering.
Der er nogle ulemper ved at gemme sikkerhedskopier i skyen, startende med overførslen. Hvis sikkerhedskopierne til databasen er ekstremt store, kan det tage lang tid at lave selve uploaden, og det kan endda have øgede omkostninger, hvis cloud-tjenesten opkræver for båndbreddeoverførsel. Kompression anbefales stærkt for at holde tid og omkostninger nede.
Sikkerhed kunne være en anden bekymring med hosting af sikkerhedskopier i skyen, mens nogle virksomheder har strenge retningslinjer for, hvor deres data opbevares og findes. Hvis sikkerhed er et problem, kan alle sikkerhedskopier krypteres, før de eksporteres til en cloud-hostingtjeneste.
Cloud Backup-indstillinger
Der er flere forskellige måder at oprette databasesikkerhedskopier til PostgreSQL på, og afhængigt af typen af backup vil gendannelsestid, størrelse og infrastrukturmuligheder variere. Da mange af cloud storage-løsningerne simpelthen er lagring med forskellige API-frontends, kan enhver smart backup-løsning oprettes med lidt scripting.
Snapshot-sikkerhedskopier
Snapshots er sikkerhedskopier, der har en kopi af PostgreSQL-databasen på et bestemt tidspunkt. Disse sikkerhedskopier oprettes enten ved at bruge pg_dump, som blot dumper databasen til en enkelt fil, eller ved at kopiere basisdatamappen til PostgreSQL. Begge disse kan komprimeres, kopieres til andre drev og servere og kopieres til den ønskede cloud-lagringsmulighed.
Brug af pg_dump med komprimering
pg_dump -Fc severalnines > severalnines.dmp
Sikkerhedskopiering af databibliotek ved hjælp af pg_basebackup
Programmet pg_basebackup kan meget nemt bruges til at lave en basis backup. Besøg den officielle dokumentation for den version af PostgreSQL, der bruges, for at få flere oplysninger om alle funktionerne, og hvordan du konfigurerer dem.
pg_basebackup --format=tar -z -D severalnines_basebackup
Amazon S3
Med Amazons AWS-platform er S3 en datalagringstjeneste, der kan bruges til at gemme databasesikkerhedskopier. Mens sikkerhedskopier kan uploades via webgrænsefladen, kan Amazon CLI (Command Line Interface) bruges til at gøre det fra kommandolinjen og gennem backup-automatiseringsscripts. Information om AWS CLI kan findes her. Hvis sikkerhedskopier skal opbevares i meget lang tid, og genoprettelsestiden ikke er et problem, kan sikkerhedskopier overføres til Amazons Glacier-tjeneste, hvilket giver meget billigere langtidslagring.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups
Amazon har også forskellige regioner for deres tjenester over hele verden. Selvom de har en god oppetidshistorik, øger spredning af kopier af sikkerhedskopier på tværs af flere regioner mulighederne for gendannelse af katastrofer og mindsker chancerne for at miste værdifulde data.
Microsoft Azure Storage
Microsofts cloud-platform, Azure, har lagermuligheder med deres egen kommandolinjegrænseflade, information kan findes her.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup
Alle andre moderne cloud-lagringstjenester bør tilbyde lignende værktøjer til at kopiere sikkerhedskopier til deres cloud-servere, se deres dokumentation for detaljer.
Standby-sikkerhedskopier
Nogle gange kan backups i sig selv være ekstremt store, selvom de er komprimerede, og upload af en daglig eller ugentlig backup til en cloud-tjeneste kan være udelukket på grund af båndbreddehastigheder og/eller omkostninger. Så det er meget sværere at få en sikkerhedskopi i skyen til opbevaring.
En måde at gøre dette på er at have en varm eller varm standby kørende i en cloud-baseret virtuel maskine, såsom en Amazons EC2-instans, hvor det er en nøjagtig kopi af hovedmasterdatabasen og de eneste data, der sendes til cloud-instansen er ændringer i stedet for en anden kopi af hele databasen. Dette ville kræve overførsel af hele databasen på én gang, men derefter er det kun ændringerne, der skal overføres.
Men er en standby-server faktisk en backup? Hvis masterdatabasen går ned, kan standbyen omdannes til masteren og applikationer omdirigeres til den, men hvis målet er at have backups for et bestemt tidspunkt i løbet af den seneste uge/måneder, vil dette ikke fungere.
For at rette op på dette kan der gøres flere ting. Standbyen i sig selv kan tvinges til at have en forsinkelse, idet den f.eks. kun indtager data, når den er en dag gammel. En anden er at lave backups på en af de traditionelle måder (pg_dump, data directory copy) på cloud-standby, hvilket betyder, at disse backups ikke skal overføres over netværket, da de bliver oprettet på selve cloud-maskinen. Overførsler i netværket er normalt hurtigere og billigere.
ClusterControl-sikkerhedskopier og skyen
Severalnines skabte ClusterControl, et databasestyringssystem, der hjælper med at administrere mange forskellige databaser inklusive PostgreSQL. Det er en ultimativ værktøjskasse for enhver database eller systemadministrator at have fuldstændig kontrol og synlighed over deres databaser, og den inkluderer meget praktiske sikkerhedskopieringsfunktioner.
Med ClusterControl kan sikkerhedskopier af PostgreSQL-databaser nemt administreres, planlægges og konfigureres til automatisk at kopiere de sikkerhedskopier, der er lavet til "cloud storage"-tjenester, herunder Amazon S3, Microsoft Azure og Google Cloud. Dette gør det ikke nødvendigt at scripte tilpassede værktøjer til at uploade sikkerhedskopier til skyen, og det giver en god brugergrænseflade til sikkerhedskopierne generelt.
Sikkerhedskopiering af vores databaser bør altid ske, og at gemme dem på anden, tredje og fjerde placering er en meget god og almindelig praksis. At smide en cloud-option ind øger mulighederne for gendannelse af katastrofer og tilføjer endnu et lag af backend-stabilitet for en virksomhed, hvor virksomheden i mange tilfælde forsvinder, hvis databasen forsvinder. At undersøge mulighederne for sikkerhedskopiering i skyen i dag kan eliminere katastrofer i morgen.