Deze blog is bijgewerkt op 27-11-18 en 29-11 om wijzigingen aan te brengen zoals aanbevolen door onze geweldige commentatoren!
Net als bij elk ander onderdeel van een bedrijf, zijn databases uiterst belangrijk in hun interne werking.
Of het nu gaat om de kern van het bedrijf of gewoon een ander onderdeel, van databases moet regelmatig een back-up worden gemaakt en op veilige locaties worden opgeslagen voor mogelijk toekomstig herstel.
Moet ik een back-up maken naar de cloud?
Een algemene regel is om ten minste 3 kopieën van iets van waarde te hebben en die back-ups op verschillende locaties op te slaan. Back-ups op dezelfde schijf zijn nutteloos als de schijf zelf sterft, dezelfde host-back-ups lopen ook risico als de host uitvalt, en back-ups van hetzelfde gebouw lopen ook gevaar als het gebouw afbrandt (drastisch en onwaarschijnlijk, maar mogelijk).
Cloudback-ups bieden een gemakkelijke oplossing voor de noodzaak van off-site back-ups zonder dat u nieuwe hardware op een secundaire locatie hoeft te draaien. Er zijn veel verschillende cloudservices die back-upopslag bieden, en het kiezen van de juiste hangt af van de back-upbehoeften, groottevereisten, kosten en beveiliging.
De voordelen van het hebben van back-ups in de cloud zijn talrijk, maar hebben voornamelijk te maken met het feit dat deze back-ups op een andere locatie dan de hoofddatabase worden opgeslagen, waardoor we een vangnet hebben in het geval van een noodherstel. Hoewel we niet in detail treden over het instellen van elk van deze back-upopties, zullen we enkele verschillende ideeën en configuraties voor back-ups onderzoeken.
Er zijn enkele nadelen aan het opslaan van back-ups in de cloud, te beginnen met de overdracht. Als de back-ups voor de database extreem groot zijn, kan het veel tijd kosten om de daadwerkelijke upload uit te voeren en kan het zelfs tot hogere kosten leiden als de cloudservice kosten in rekening brengt voor bandbreedteoverdracht. Compressie wordt sterk aanbevolen om tijd en kosten laag te houden.
Beveiliging kan een ander punt van zorg zijn bij het hosten van back-ups in de cloud, terwijl sommige bedrijven strikte richtlijnen hebben voor waar hun gegevens worden opgeslagen en bewaard. Als beveiliging een probleem is, kunnen eventuele back-ups worden versleuteld voordat ze naar een cloudhostingservice worden geëxporteerd.
Opties voor cloudback-up
Er zijn verschillende manieren om databaseback-ups te maken voor PostgreSQL, en afhankelijk van het type back-up, zullen de hersteltijd, grootte en infrastructuuropties variëren. Aangezien veel van de cloudopslagoplossingen eenvoudigweg opslag zijn met verschillende API-frontends, kan elke slimme back-upoplossing worden gemaakt met een beetje scripting.
Snapshot-back-ups
Snapshots zijn back-ups die op een bepaald moment een kopie van de PostgreSQL-database hebben. Deze back-ups worden gemaakt door pg_dump te gebruiken, waarmee de database eenvoudig naar een enkel bestand wordt gedumpt, of door de basisgegevensmap voor PostgreSQL te kopiëren. Elk van deze kan worden gecomprimeerd, gekopieerd naar andere schijven en servers en gekopieerd naar de gewenste cloudopslagoptie.
Pg_dump gebruiken met compressie
pg_dump -Fc severalnines > severalnines.dmp
Back-up van gegevensdirectory met pg_basebackup
Met het programma pg_basebackup kan heel eenvoudig een basisback-up worden gemaakt. Voor meer informatie over alle functies en hoe u deze instelt, gaat u naar de officiële documentatie voor de versie van PostgreSQL die wordt gebruikt.
pg_basebackup --format=tar -z -D severalnines_basebackup
Amazon S3
Met het AWS-platform van Amazon is S3 een gegevensopslagservice die kan worden gebruikt om databaseback-ups op te slaan. Hoewel back-ups kunnen worden geüpload via de webinterface, kan de Amazon CLI (Command Line Interface) worden gebruikt om dit te doen vanaf de opdrachtregel en via back-upautomatiseringsscripts. Informatie over de AWS CLI vindt u hier. Als back-ups heel lang moeten worden bewaard en de hersteltijd geen probleem is, kunnen back-ups worden overgebracht naar de Glacier-service van Amazon, wat een veel goedkopere langetermijnopslag oplevert.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups
Amazon heeft ook verschillende regio's voor hun diensten over de hele wereld. Hoewel ze een goede uptime-geschiedenis hebben, vergroot het verspreiden van kopieën van back-ups over meerdere regio's de mogelijkheden voor noodherstel en verkleint het de kans op verlies van waardevolle gegevens.
Microsoft Azure-opslag
Het cloudplatform van Microsoft, Azure, heeft opslagopties met een eigen opdrachtregelinterface, informatie vindt u hier.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup
Elke andere moderne cloudopslagservice zou vergelijkbare tools moeten bieden om back-ups naar hun cloudservers te kopiëren, raadpleeg hun documentatie voor details.
Stand-by back-ups
Soms kunnen back-ups zelf extreem groot zijn, zelfs als ze zijn gecomprimeerd, en het uploaden van een dagelijkse of wekelijkse back-up naar een cloudservice kan onmogelijk zijn vanwege bandbreedtesnelheden en/of kosten. Het is dus veel moeilijker om een back-up in de cloud te krijgen voor bewaring.
Een manier om dit te doen is om een warme of warme stand-by te laten draaien in een cloudgebaseerde virtuele machine, zoals een EC2-instantie van Amazon, waar het een exacte kopie is van de hoofdhoofddatabase en de enige gegevens die naar de cloudinstantie worden verzonden is eventuele wijzigingen, in plaats van een andere kopie van de hele database. Hiervoor zou de hele database in één keer moeten worden overgedragen, maar daarna hoeven alleen de wijzigingen te worden overgedragen.
Maar is een standby-server eigenlijk een back-up? Als de masterdatabase uitvalt, kan de standby worden omgezet in de master en applicaties worden ernaartoe geleid, maar als het doel is om back-ups te hebben voor een bepaald tijdstip in de afgelopen week / maanden, zal dit niet lukken.
Om dit op te lossen, kunnen verschillende dingen worden gedaan. De stand-by zelf kan een vertraging oplopen, waarbij gegevens bijvoorbeeld pas een dag oud worden opgenomen. Een andere manier is om back-ups te maken op een van de traditionele manieren (pg_dump, data directory-kopie) in de cloud-standby, wat betekent dat deze back-ups niet via het netwerk hoeven te worden overgedragen omdat ze op de cloudmachine zelf worden gemaakt. Overboekingen binnen het netwerk zijn meestal sneller en goedkoper.
ClusterControl-back-ups en de cloud
Verscheidene negens creëerde ClusterControl, een databasebeheersysteem dat helpt bij het beheren van veel verschillende databases, waaronder PostgreSQL. Het is een ultieme toolbox voor elke database- of systeembeheerder om volledige controle en zichtbaarheid van hun databases te hebben, en bevat zeer handige back-upfuncties.
Met ClusterControl kunnen back-ups van PostgreSQL-databases eenvoudig worden beheerd, gepland en ingesteld om de gemaakte back-ups automatisch te kopiëren naar 'cloudopslag'-services, waaronder Amazon S3, Microsoft Azure en Google Cloud. Dit maakt het niet nodig om aangepaste tools te scripten om back-ups naar de cloud te uploaden, en het geeft ook een mooie gebruikersinterface voor de back-ups in het algemeen.
Het maken van een back-up van onze databases zou altijd moeten gebeuren, en het opslaan ervan op de tweede, derde en vierde locatie is een zeer goede en gebruikelijke praktijk. Het toevoegen van een cloudoptie vergroot de mogelijkheden voor noodherstel en zorgt voor nog een extra laag back-endstabiliteit voor een bedrijf, waarbij in veel gevallen als de database verdwijnt, het bedrijf verdwijnt. Als u vandaag cloudback-upopties onderzoekt, kunt u morgen een ramp voorkomen.