Data är förmodligen en av de mest värdefulla tillgångarna i ett företag. På grund av detta bör vi alltid ha en Disaster Recovery Plan (DRP) för att förhindra dataförlust i händelse av en olycka eller hårdvarufel.
En säkerhetskopia är den enklaste formen av DR, men det kanske inte alltid räcker för att garantera ett acceptabelt Recovery Point Objective (RPO). Det rekommenderas att du har minst tre säkerhetskopior lagrade på olika fysiska platser.
Bästa praxis säger att säkerhetskopieringsfiler ska ha en lagrad lokalt på databasservern (för snabbare återställning), en annan på en centraliserad backupserver och den sista i molnet.
För den här bloggen tar vi en titt på vilka alternativ Amazon AWS tillhandahåller för lagring av PostgreSQL-säkerhetskopior i molnet och vi visar några exempel på hur man gör det.
Om Amazon AWS
Amazon AWS är en av världens mest avancerade molnleverantörer när det gäller funktioner och tjänster, med miljontals kunder. Om vi vill köra våra PostgreSQL-databaser på Amazon AWS har vi några alternativ...
-
Amazon RDS:Det låter oss skapa, hantera och skala en PostgreSQL-databas (eller olika databastekniker) i molnet på ett enkelt och snabbt sätt.
-
Amazon Aurora:Det är en PostgreSQL-kompatibel databas byggd för molnet. Enligt AWS webbplats är det tre gånger snabbare än vanliga PostgreSQL-databaser.
-
Amazon EC2:Det är en webbtjänst som ger storleksändringsbar beräkningskapacitet i molnet. Den ger dig fullständig kontroll över dina datorresurser och låter dig ställa in och konfigurera allt om dina instanser från ditt operativsystem till dina applikationer.
Men i själva verket behöver vi inte ha våra databaser igång på Amazon för att lagra våra säkerhetskopior här.
Lagra säkerhetskopior på Amazon AWS
Det finns olika alternativ för att lagra vår PostgreSQL-säkerhetskopia på AWS. Om vi kör vår PostgreSQL-databas på AWS har vi fler alternativ och (eftersom vi är i samma nätverk) kan det också vara snabbare. Låt oss se hur AWS kan hjälpa oss att lagra våra säkerhetskopior.
AWS CLI
Låt oss först förbereda vår miljö för att testa de olika AWS-alternativen. För våra exempel använder vi en lokal PostgreSQL 11-server som körs på CentOS 7. Här måste vi installera AWS CLI enligt instruktionerna från den här webbplatsen.
När vi har vår AWS CLI installerad kan vi testa den från kommandoraden:
[[email protected] ~]# aws --version
aws-cli/1.16.225 Python/2.7.5 Linux/4.15.18-14-pve botocore/1.12.215
Nästa steg är nu att konfigurera vår nya klient som kör kommandot aws med konfigureringsalternativet.
[[email protected] ~]# aws configure
AWS Access Key ID [None]: AKIA7TMEO21BEBR1A7HR
AWS Secret Access Key [None]: SxrCECrW/RGaKh2FTYTyca7SsQGNUW4uQ1JB8hRp
Default region name [None]: us-east-1
Default output format [None]:
För att få denna information kan du gå till IAM AWS-sektionen och kontrollera den aktuella användaren, eller om du föredrar det kan du skapa en ny för den här uppgiften.
Efter detta är vi redo att använda AWS CLI för att komma åt våra Amazon AWS-tjänster.
Amazon S3
Detta är förmodligen det vanligaste alternativet för att lagra säkerhetskopior i molnet. Amazon S3 kan lagra och hämta vilken mängd data som helst från var som helst på Internet. Det är en enkel lagringstjänst som erbjuder en extremt hållbar, högtillgänglig och oändligt skalbar datalagringsinfrastruktur till låga kostnader.
Amazon S3 tillhandahåller ett enkelt webbtjänstgränssnitt som du kan använda för att lagra och hämta vilken mängd data som helst, när som helst, från var som helst på webben, och (med AWS CLI eller AWS SDK) kan integrera den med olika system och programmeringsspråk.
Hur man använder det
Amazon S3 använder Buckets. De är unika behållare för allt som du lagrar i Amazon S3. Så, det första steget är att komma åt Amazon S3 Management Console och skapa en ny Bucket.
I det första steget behöver vi bara lägga till Bucket-namnet och AWS-region.
Nu kan vi konfigurera vissa detaljer om vår nya Bucket, som versionshantering och loggning.
Och sedan kan vi ange behörigheterna för denna nya Bucket.
Nu har vi vår Bucket skapad, låt oss se hur vi kan använda den för att lagra våra PostgreSQL-säkerhetskopior.
Låt oss först testa att vår klient ansluter den till S3.
[[email protected] ~]# aws s3 ls
2019-08-23 19:29:02 s9stesting1
Det fungerar! Med föregående kommando listar vi de aktuella Buckets som skapats.
Så, nu kan vi bara ladda upp säkerhetskopian till S3-tjänsten. För detta kan vi använda kommandot aws sync eller aws cp.
[[email protected] ~]# aws s3 sync /root/backups/BACKUP-5/ s3://s9stesting1/backups/
upload: backups/BACKUP-5/cmon_backup.metadata to s3://s9stesting1/backups/cmon_backup.metadata
upload: backups/BACKUP-5/cmon_backup.log to s3://s9stesting1/backups/cmon_backup.log
upload: backups/BACKUP-5/base.tar.gz to s3://s9stesting1/backups/base.tar.gz
[[email protected] ~]#
[[email protected] ~]# aws s3 cp /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz s3://s9stesting1/backups/
upload: backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz to s3://s9stesting1/backups/pg_dump_2019-08-23_205919.sql.gz
[[email protected] ~]#
Vi kan kontrollera innehållet i Bucket från AWS-webbplatsen.
Eller till och med genom att använda AWS CLI.
[[email protected] ~]# aws s3 ls s3://s9stesting1/backups/
2019-08-23 19:29:31 0
2019-08-23 20:58:36 2974633 base.tar.gz
2019-08-23 20:58:36 1742 cmon_backup.log
2019-08-23 20:58:35 2419 cmon_backup.metadata
2019-08-23 20:59:52 1028 pg_dump_2019-08-23_205919.sql.gz
För mer information om AWS S3 CLI kan du kontrollera den officiella AWS-dokumentationen.
Amazon S3 Glacier
Detta är den billigare versionen av Amazon S3. Den största skillnaden mellan dem är hastighet och tillgänglighet. Du kan använda Amazon S3 Glacier om lagringskostnaden måste vara låg och du inte behöver tillgång till din data i millisekund. Användning är en annan viktig skillnad mellan dem.
Hur man använder det
Istället Buckets använder Amazon S3 Glacier valv. Det är en behållare för att förvara alla föremål. Så det första steget är att komma åt Amazon S3 Glacier Management Console och skapa ett nytt valv.
Här måste vi lägga till valvets namn och regionen och i nästa steg kan vi aktivera händelseaviseringar som använder Amazon Simple Notification Service (Amazon SNS).
Nu har vi skapat vårt valv, vi kan komma åt det från AWS CLI .
[[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2
{
"SizeInBytes": 0,
"VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",
"NumberOfArchives": 0,
"CreationDate": "2019-08-23T21:08:07.943Z",
"VaultName": "s9stesting2"
}
Det fungerar. Så nu kan vi ladda upp vår säkerhetskopia här.
[[email protected] ~]# aws glacier upload-archive --body /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz --account-id - --archive-description "Backup upload test" --vault-name s9stesting2
{
"archiveId": "ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg",
"checksum": "258faaa90b5139cfdd2fb06cb904fe8b0c0f0f80cba9bb6f39f0d7dd2566a9aa",
"location": "/984227183428/vaults/s9stesting2/archives/ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg"
}
En viktig sak är att Vault-statusen uppdateras ungefär en gång per dag, så vi bör vänta på att se filen laddas upp.
[[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2
{
"SizeInBytes": 33796,
"VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",
"LastInventoryDate": "2019-08-24T06:37:02.598Z",
"NumberOfArchives": 1,
"CreationDate": "2019-08-23T21:08:07.943Z",
"VaultName": "s9stesting2"
}
Här har vi laddat upp vår fil på vårt S3 Glacier Vault.
För mer information om AWS Glacier CLI kan du kontrollera den officiella AWS-dokumentationen.
EC2
Det här alternativet för backuplagring är det dyrare och mer tidskrävande, men det är användbart om du vill ha full kontroll över backuplagringsmiljön och vill utföra anpassade uppgifter på backuperna (t.ex. Backup Verification .)
Amazon EC2 (Elastic Compute Cloud) är en webbtjänst som ger storleksändringsbar beräkningskapacitet i molnet. Det ger dig fullständig kontroll över dina datorresurser och låter dig ställa in och konfigurera allt om dina instanser från ditt operativsystem till dina applikationer. Det låter dig också snabbt skala kapacitet, både upp och ner, allt eftersom dina datorkrav ändras.
Amazon EC2 stöder olika operativsystem som Amazon Linux, Ubuntu, Windows Server, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Fedora, Debian, CentOS, Gentoo Linux, Oracle Linux och FreeBSD.
Hur man använder det
Gå till Amazon EC2-sektionen och tryck på Starta instans. I det första steget måste du välja EC2-instansens operativsystem.
I nästa steg måste du välja resurserna för den nya instansen.
Sedan kan du ange mer detaljerad konfiguration som nätverk, subnät och mer .
Nu kan vi lägga till mer lagringskapacitet på den här nya instansen, och som en backupserver, borde vi göra det.
När vi är klara med skapandet kan vi gå till avsnittet Instanser för att se vår nya EC2-instans.
När instansen är klar (instansstatus körs) kan du lagra säkerhetskopior här, till exempel, skicka den via SSH eller FTP med den offentliga DNS som skapats av AWS. Låt oss se ett exempel med Rsync och ett annat med SCP Linux-kommando.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/user/key1.pem" /root/backups/BACKUP-11/base.tar.gz [email protected]:/backups/20190823/
sending incremental file list
base.tar.gz
4,091,563 100% 2.18MB/s 0:00:01 (xfr#1, to-chk=0/1)
sent 3,735,675 bytes received 35 bytes 574,724.62 bytes/sec
total size is 4,091,563 speedup is 1.10
[[email protected] ~]#
[[email protected] ~]# scp -i /tmp/key1.pem /root/backups/BACKUP-12/pg_dump_2019-08-25_211903.sql.gz [email protected]:/backups/20190823/
pg_dump_2019-08-25_211903.sql.gz 100% 24KB 76.4KB/s 00:00
AWS-säkerhetskopia
AWS Backup är en centraliserad säkerhetskopieringstjänst som ger dig funktioner för säkerhetskopiering, såsom schemaläggning av säkerhetskopiering, retentionshantering och säkerhetskopieringsövervakning, samt ytterligare funktioner, såsom livscykelsäkerhetskopiering till en låg kostnad lagringsnivå, säkerhetskopieringslagring och kryptering som är oberoende av dess källdata och policyer för säkerhetskopiering.
Du kan använda AWS Backup för att hantera säkerhetskopior av EBS-volymer, RDS-databaser, DynamoDB-tabeller, EFS-filsystem och Storage Gateway-volymer.
Hur man använder det
Gå till avsnittet AWS Backup på AWS Management Console.
Här har du olika alternativ, som schemalägga, skapa eller återställa en säkerhetskopia . Låt oss se hur du skapar en ny säkerhetskopia.
I det här steget måste vi välja den resurstyp som kan vara DynamoDB, RDS, EBS, EFS eller Storage Gateway och fler detaljer som utgångsdatum, backupvalv och IAM-rollen.
Då kan vi se det nya jobbet som skapats i avsnittet AWS Backup Jobs .
Ögonblicksbild
Nu kan vi nämna detta kända alternativ i alla virtualiseringsmiljöer. Ögonblicksbilden är en säkerhetskopia tagen vid en specifik tidpunkt, och AWS tillåter oss att använda den för AWS-produkterna. Låt oss ta ett exempel på en RDS-ögonblicksbild.
Vi behöver bara välja instansen och lägga till ögonblicksbildens namn, och det är Det. Vi kan se denna och föregående ögonblicksbild i avsnittet RDS Snapshot.
Hantera dina säkerhetskopior med ClusterControl
ClusterControl är ett omfattande hanteringssystem för databaser med öppen källkod som automatiserar driftsättning och hanteringsfunktioner, såväl som hälso- och prestandaövervakning. ClusterControl stöder driftsättning, hantering, övervakning och skalning för olika databasteknologier och miljöer, inklusive EC2. Så vi kan till exempel skapa vår EC2-instans på AWS och distribuera/importera vår databastjänst med ClusterControl.
Skapa en säkerhetskopia
För denna uppgift, gå till ClusterControl -> Välj Cluster -> Backup -> Create Backup.
Vi kan skapa en ny säkerhetskopia eller konfigurera en schemalagd. För vårt exempel skapar vi en enda säkerhetskopia direkt.
Vi måste välja en metod, den server från vilken säkerhetskopieringen ska tas , och var vi vill lagra säkerhetskopian. Vi kan också ladda upp vår säkerhetskopia till molnet (AWS, Google eller Azure) genom att aktivera motsvarande knapp.
Sedan anger vi användningen av komprimering, komprimeringsnivån, kryptering och retention period för vår backup.
Om vi aktiverade alternativet för uppladdning till molnet, ser vi ett avsnitt för att specificera molnleverantören (i det här fallet AWS) och referenserna (ClusterControl -> Integrations -> Cloud Providers). För AWS använder den S3-tjänsten, så vi måste välja en hink eller till och med skapa en ny för att lagra våra säkerhetskopior.
På avsnittet för säkerhetskopiering kan vi se förloppet för säkerhetskopieringen, och information som metod, storlek, plats och mer.
Slutsats
Amazon AWS tillåter oss att lagra våra PostgreSQL-säkerhetskopior, oavsett om vi använder den som en databasmolnleverantör eller inte. För att ha en effektiv säkerhetskopieringsplan bör du överväga att lagra minst en säkerhetskopia av databas i molnet för att undvika dataförlust i händelse av maskinvarufel i en annan säkerhetskopieringsbutik. Molnet låter dig lagra så många säkerhetskopior som du vill lagra eller betala för.