Den här bloggen uppdaterades 27.11.18 och 29.11.18 för att göra ändringar som rekommenderas av våra fantastiska kommentatorer!
Som med alla andra komponenter i ett företag är databaser extremt viktiga för dess inre funktion.
Oavsett om det är kärnan i verksamheten eller bara en annan komponent, bör databaser säkerhetskopieras regelbundet och lagras på säkra platser för eventuell framtida återställning.
Bör jag säkerhetskopiera till molnet?
En allmän regel är att ha minst 3 kopior av något av värde och att lagra dessa säkerhetskopior på olika platser. Säkerhetskopieringar på samma enhet är värdelösa om själva enheten dör, säkerhetskopior av samma värd är också i riskzonen om värden går ner, och säkerhetskopior av samma byggnad är också i fara om byggnaden brinner ner (drastiskt och osannolikt, men möjligt).
Molnsäkerhetskopieringar erbjuder en enkel lösning för behovet av säkerhetskopiering utanför platsen utan att behöva snurra upp ny hårdvara på en sekundär plats. Det finns många olika molntjänster som erbjuder backuplagring, och valet av rätt beror på backupbehov, storlekskrav, kostnad och säkerhet.
Fördelarna med att ha säkerhetskopior i molnet är många, men kretsar främst kring att ha dessa säkerhetskopior lagrade på en annan plats än huvuddatabasen, vilket gör att vi kan ha ett skyddsnät i händelse av en katastrofåterställning. Även om vi inte kommer att gå in på detaljer om hur man ställer in vart och ett av dessa säkerhetskopieringsalternativ, kommer vi att utforska några olika idéer och konfigurationer för säkerhetskopiering.
Det finns några nackdelar med att lagra säkerhetskopior i molnet, från och med överföringen. Om säkerhetskopiorna för databasen är extremt stora kan det ta lång tid att göra själva uppladdningen, och kan till och med ha ökade kostnader om molntjänsten tar betalt för bandbreddsöverföring. Kompression rekommenderas starkt för att hålla tid och kostnader låga.
Säkerhet kan vara ett annat problem med att lagra säkerhetskopior i molnet, medan vissa företag har strikta riktlinjer för var deras data lagras och finns. Om säkerheten är ett problem kan alla säkerhetskopior krypteras innan de exporteras till en molnvärdtjänst.
Alternativ för Cloud Backup
Det finns flera olika sätt att skapa databassäkerhetskopior för PostgreSQL, och beroende på typen av säkerhetskopiering kommer återställningstid, storlek och infrastrukturalternativ att variera. Eftersom många av molnlagringslösningarna helt enkelt är lagring med olika API-gränssnitt kan vilken smart backuplösning som helst skapas med lite skript.
Säkerhetskopiering av ögonblicksbilder
Ögonblicksbilder är säkerhetskopior som har en kopia av PostgreSQL-databasen vid en specifik tidpunkt. Dessa säkerhetskopior skapas antingen genom att använda pg_dump, som helt enkelt dumpar databasen till en enda fil, eller genom att kopiera basdatakatalogen för PostgreSQL. Båda dessa kan komprimeras, kopieras till andra enheter och servrar och kopieras till önskat molnlagringsalternativ.
Använda pg_dump med komprimering
pg_dump -Fc severalnines > severalnines.dmp
Säkerhetskopiering av datakatalog med pg_basebackup
Programmet pg_basebackup kan mycket enkelt användas för att skapa en basbackup. För mer information om alla funktioner och hur du ställer in dem, besök den officiella dokumentationen för den version av PostgreSQL som används.
pg_basebackup --format=tar -z -D severalnines_basebackup
Amazon S3
Med Amazons AWS-plattform är S3 en datalagringstjänst som kan användas för att lagra databassäkerhetskopior. Medan säkerhetskopior kan laddas upp via webbgränssnittet, kan Amazon CLI (Command Line Interface) användas för att göra det från kommandoraden och genom säkerhetskopieringsautomatiseringsskript. Information om AWS CLI finns här. Om säkerhetskopior ska sparas under mycket lång tid, och återställningstiden inte är ett problem, kan säkerhetskopior överföras till Amazons Glacier-tjänst, vilket ger mycket billigare långtidslagring.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups
Amazon har också olika regioner för sina tjänster över hela världen. Även om de har en bra upptidshistorik ökar spridning av kopior av säkerhetskopior över flera regioner alternativen för katastrofåterställning och minskar risken för att förlora värdefull data.
Microsoft Azure Storage
Microsofts molnplattform, Azure, har lagringsalternativ med sitt eget kommandoradsgränssnitt, information finns här.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup
Alla andra moderna molnlagringstjänster bör erbjuda liknande verktyg för att kopiera säkerhetskopior till sina molnservrar, se deras dokumentation för detaljer.
Standby-säkerhetskopior
Ibland kan säkerhetskopior i sig vara extremt stora även om de är komprimerade, och att ladda upp en daglig eller veckovis säkerhetskopia till en molntjänst kan vara uteslutet på grund av bandbreddshastigheter och/eller kostnader. Så att få en säkerhetskopia i molnet för förvaring är mycket svårare.
Ett sätt att göra detta är att köra ett varmt eller varmt standbyläge i en molnbaserad virtuell maskin, såsom en Amazons EC2-instans, där det är en exakt kopia av huvuddatabasen och den enda data som skickas till molninstansen. är några ändringar, snarare än en annan kopia av hela databasen. Detta skulle kräva att hela databasen överförs på en gång, men efter det är det bara ändringarna som behöver överföras.
Men är en standby-server verkligen en säkerhetskopia? Om masterdatabasen går ner kan standby-läget omvandlas till mastern och applikationer omdirigeras till den, men om målet är att ha säkerhetskopior under en viss tidpunkt under den senaste veckan/månaderna kommer detta inte att fungera.
För att fixa detta kan flera saker göras. Standby-läget i sig kan tvingas till en fördröjning, till exempel tar in data bara när den är en dag gammal. En annan är att skapa säkerhetskopior på ett av de traditionella sätten (pg_dump, datakatalogkopia) i molnstandby, vilket innebär att dessa säkerhetskopior inte behöver överföras över nätverket eftersom de skapas på själva molnmaskinen. Överföringar inom nätverket är vanligtvis snabbare och billigare.
ClusterControl-säkerhetskopior och molnet
Severalnines skapade ClusterControl, ett databashanteringssystem som hjälper till att hantera många olika databaser inklusive PostgreSQL. Det är en ultimat verktygslåda för alla databas- eller systemadministratörer att ha fullständig kontroll och synlighet över sina databaser, och den innehåller mycket praktiska säkerhetskopieringsfunktioner.
Med ClusterControl kan säkerhetskopior av PostgreSQL-databaser enkelt hanteras, schemaläggas och ställas in för att automatiskt kopiera säkerhetskopiorna till "molnlagringstjänster", inklusive Amazon S3, Microsoft Azure och Google Cloud. Detta gör att det inte behövs skripta anpassade verktyg för att ladda upp säkerhetskopior till molnet, och det ger ett trevligt användargränssnitt för säkerhetskopieringarna i allmänhet.
Säkerhetskopiering av våra databaser bör alltid ske, och att lagra dem på andra, tredje och fjärde platser är en mycket bra och vanlig praxis. Att slänga in ett molnalternativ ökar möjligheterna för katastrofåterställning och lägger ytterligare ett lager av backend-stabilitet för ett företag, där företaget i många fall försvinner om databasen försvinner. Att utforska alternativen för molnsäkerhetskopiering idag kan eliminera katastrofer i morgon.