89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
---
|
|
title: Backup
|
|
layout: default
|
|
parent: How Tos
|
|
nav_order: 1
|
|
---
|
|
|
|
# Backup database
|
|
|
|
To backup the database, you need to add `backup` command.
|
|
|
|
{: .note }
|
|
The default storage is local storage mounted to __/backup__. The backup is compressed by default using gzip. The flag __`disable-compression`__ can be used when you need to disable backup compression.
|
|
|
|
{: .warning }
|
|
Creating a user for backup tasks who has read-only access is recommended!
|
|
|
|
The backup process can be run in scheduled mode for the recurring backups on Docker or Docker Swarm.
|
|
On Kubernetes it can be run as CronJob, you don't need to run it in Scheduled mode.
|
|
|
|
It handles __recurring__ backups of postgres database on Docker and can be deployed as __CronJob on Kubernetes__ using local, AWS S3 or SSH compatible storage.
|
|
|
|
```yml
|
|
services:
|
|
pg-bkup:
|
|
# In production, it is advised to lock your image tag to a proper
|
|
# release version instead of using `latest`.
|
|
# Check https://github.com/jkaninda/pg-bkup/releases
|
|
# for a list of available releases.
|
|
image: jkaninda/pg-bkup
|
|
container_name: pg-bkup
|
|
command: backup -d database
|
|
volumes:
|
|
- ./backup:/backup
|
|
environment:
|
|
- DB_PORT=5432
|
|
- DB_HOST=postgres
|
|
- DB_NAME=database
|
|
- DB_USERNAME=username
|
|
- DB_PASSWORD=password
|
|
# pg-bkup container must be connected to the same network with your database
|
|
networks:
|
|
- web
|
|
networks:
|
|
web:
|
|
```
|
|
|
|
### Backup using Docker CLI
|
|
|
|
```shell
|
|
docker run --rm --network your_network_name \
|
|
-v $PWD/backup:/backup/ \
|
|
-e "DB_HOST=dbhost" \
|
|
-e "DB_USERNAME=username" \
|
|
-e "DB_PASSWORD=password" \
|
|
jkaninda/pg-bkup backup -d database_name
|
|
```
|
|
|
|
In case you need to use recurring backups, you can use `--cron-expression "0 1 * * *"` flag or `BACKUP_CRON_EXPRESSION=0 1 * * *` as described below.
|
|
|
|
```yml
|
|
services:
|
|
pg-bkup:
|
|
# In production, it is advised to lock your image tag to a proper
|
|
# release version instead of using `latest`.
|
|
# Check https://github.com/jkaninda/pg-bkup/releases
|
|
# for a list of available releases.
|
|
image: jkaninda/pg-bkup
|
|
container_name: pg-bkup
|
|
command: backup -d database --cron-expression "0 1 * * *"
|
|
volumes:
|
|
- ./backup:/backup
|
|
environment:
|
|
- DB_PORT=5432
|
|
- DB_HOST=postgres
|
|
- DB_NAME=database
|
|
- DB_USERNAME=username
|
|
- DB_PASSWORD=password
|
|
- BACKUP_CRON_EXPRESSION=0 1 * * *
|
|
#Delete old backup created more than specified days ago
|
|
#- BACKUP_RETENTION_DAYS=7
|
|
# pg-bkup container must be connected to the same network with your database
|
|
networks:
|
|
- web
|
|
networks:
|
|
web:
|
|
```
|
|
|