Mijn vraag
In het kort: hoe maken jullie consistente back-ups van Docker volumes?
Stel je hebt containers met volumes die wat meer data bevatten, te denken valt hierbij bijvoorbeeld aan Graylog met Elasticsearch, of bijvoorbeeld applicaties die sqlite gebruiken en dat soort dingen.
Een manier om eenvoudig een consistente back-up van de data te maken, is om de containers te stoppen, en vervolgens met een tijdelijke busybox container een tar.gz archief van de named volumes te maken. En op het einde de containers weer te starten.
Als je dan de data hebt, en het docker-compose.yml bestand, kun je de boel weer eenvoudig ergens anders herstellen when the shit hits the fan.
Het probleem: naarmate de hoeveelheid data toeneemt, neemt ook de downtime toe. Momenteel ligt mijn monitoring stack er bijvoorbeeld bijna een kwartier uit om een back-up te maken.
De oplossing hiervoor - in het algemeen - is om een bestandssysteem te gebruiken dat snapshots ondersteunt, bijvoorbeeld BTRFS (ZFS etc kan ook).
Met bind mounts is dat eenvoudig te realiseren:
- Bewaar alle data op de host in een BTRFS subvolume
- Stop de containers
- Maak de snapshot
- Start de containers
- Maak tar.gz archief van de snapshot
- Verwijder de snapshot weer
Downtime is dan maar ongeveer 15 seconden
Maar... hoe doe je hetzelfde met Docker managed named volumes? Want vaak lees je dat ze juist eenvoudiger te backuppen zijn enzovoorts, maar zodra ik er op ga zoeken i.v.m. snapshots vind ik niet zoveel.
Relevante software en hardware die ik gebruik
Linux en Docker
En natuurlijk allerlei containers waar ik consistente back-ups van wil maken zonder al te veel downtime.
Wat ik al gevonden of geprobeerd heb
Verschillende dingen en strategieën.
De dooddoener is vaak: als het mogelijk is om een back-up op applicatie niveau te maken, dan is dat beter dan een file level back-up.
Nadeel daarvan vind ik alleen dat wanneer je veel verschillende soorten applicaties hebt, back-ups maken ervan een vrij complexe aangelegenheid wordt. En het herstellen dus ook.
Ik ben vooral benieuwd naar hoe jullie dit oplossen. Ik kan het immers met bind mounts fixen, maar ik vind het jammer dat ik nog geen goede manier heb gevonden om hetzelfde met named volumes te doen.
Named volumes hebben immers ook zo hun voordelen ten opzichte van bind mounts, qua gemak.
Alvast bedankt.
In het kort: hoe maken jullie consistente back-ups van Docker volumes?
Stel je hebt containers met volumes die wat meer data bevatten, te denken valt hierbij bijvoorbeeld aan Graylog met Elasticsearch, of bijvoorbeeld applicaties die sqlite gebruiken en dat soort dingen.
Een manier om eenvoudig een consistente back-up van de data te maken, is om de containers te stoppen, en vervolgens met een tijdelijke busybox container een tar.gz archief van de named volumes te maken. En op het einde de containers weer te starten.
Als je dan de data hebt, en het docker-compose.yml bestand, kun je de boel weer eenvoudig ergens anders herstellen when the shit hits the fan.
Het probleem: naarmate de hoeveelheid data toeneemt, neemt ook de downtime toe. Momenteel ligt mijn monitoring stack er bijvoorbeeld bijna een kwartier uit om een back-up te maken.
De oplossing hiervoor - in het algemeen - is om een bestandssysteem te gebruiken dat snapshots ondersteunt, bijvoorbeeld BTRFS (ZFS etc kan ook).
Met bind mounts is dat eenvoudig te realiseren:
- Bewaar alle data op de host in een BTRFS subvolume
- Stop de containers
- Maak de snapshot
- Start de containers
- Maak tar.gz archief van de snapshot
- Verwijder de snapshot weer
Downtime is dan maar ongeveer 15 seconden
Maar... hoe doe je hetzelfde met Docker managed named volumes? Want vaak lees je dat ze juist eenvoudiger te backuppen zijn enzovoorts, maar zodra ik er op ga zoeken i.v.m. snapshots vind ik niet zoveel.
Relevante software en hardware die ik gebruik
Linux en Docker
En natuurlijk allerlei containers waar ik consistente back-ups van wil maken zonder al te veel downtime.
Wat ik al gevonden of geprobeerd heb
Verschillende dingen en strategieën.
De dooddoener is vaak: als het mogelijk is om een back-up op applicatie niveau te maken, dan is dat beter dan een file level back-up.
Nadeel daarvan vind ik alleen dat wanneer je veel verschillende soorten applicaties hebt, back-ups maken ervan een vrij complexe aangelegenheid wordt. En het herstellen dus ook.
Ik ben vooral benieuwd naar hoe jullie dit oplossen. Ik kan het immers met bind mounts fixen, maar ik vind het jammer dat ik nog geen goede manier heb gevonden om hetzelfde met named volumes te doen.
Named volumes hebben immers ook zo hun voordelen ten opzichte van bind mounts, qua gemak.
Alvast bedankt.
Ask yourself if you are happy and then you cease to be.