mirror of
https://github.com/jkaninda/mysql-bkup.git
synced 2025-12-06 13:39:41 +01:00
118 lines
3.3 KiB
Markdown
118 lines
3.3 KiB
Markdown
---
|
|
title: Backup
|
|
layout: default
|
|
parent: How Tos
|
|
nav_order: 1
|
|
---
|
|
|
|
# Backup Database
|
|
|
|
To back up your database, use the `backup` command.
|
|
|
|
This section explains how to configure and run backups, including recurring backups, using Docker or Kubernetes.
|
|
|
|
---
|
|
|
|
## Default Configuration
|
|
|
|
- **Storage**: By default, backups are stored locally in the `/backup` directory.
|
|
- **Compression**: Backups are compressed using `gzip` by default. Use the `--disable-compression` flag to disable compression.
|
|
- **Security**: It is recommended to create a dedicated user with read-only access for backup tasks.
|
|
|
|
{: .note }
|
|
The backup process supports recurring backups on Docker or Docker Swarm. On Kubernetes, it can be deployed as a CronJob.
|
|
|
|
---
|
|
|
|
## Example: Basic Backup Configuration
|
|
|
|
Below is an example `docker-compose.yml` configuration for backing up a database:
|
|
|
|
```yaml
|
|
services:
|
|
mysql-bkup:
|
|
# In production, lock your image tag to a specific release version
|
|
# instead of using `latest`. Check https://github.com/jkaninda/mysql-bkup/releases
|
|
# for available releases.
|
|
image: jkaninda/mysql-bkup
|
|
container_name: mysql-bkup
|
|
command: backup -d database
|
|
volumes:
|
|
- ./backup:/backup
|
|
environment:
|
|
- DB_PORT=3306
|
|
- DB_HOST=mysql
|
|
- DB_NAME=database
|
|
- DB_USERNAME=username
|
|
- DB_PASSWORD=password
|
|
|
|
# Ensure the mysql-bkup container is connected to the same network as your database
|
|
networks:
|
|
- web
|
|
|
|
networks:
|
|
web:
|
|
```
|
|
|
|
---
|
|
|
|
## Backup Using Docker CLI
|
|
|
|
You can also run backups directly using the Docker CLI:
|
|
|
|
```bash
|
|
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
|
|
```
|
|
|
|
---
|
|
|
|
## Recurring Backups
|
|
|
|
To schedule recurring backups, use the `--cron-expression (-e)` flag or the `BACKUP_CRON_EXPRESSION` environment variable. This allows you to define a cron schedule for automated backups.
|
|
|
|
### Example: Recurring Backup Configuration
|
|
|
|
```yaml
|
|
services:
|
|
mysql-bkup:
|
|
# In production, lock your image tag to a specific release version
|
|
# instead of using `latest`. Check https://github.com/jkaninda/mysql-bkup/releases
|
|
# for available releases.
|
|
image: jkaninda/mysql-bkup
|
|
container_name: mysql-bkup
|
|
command: backup -d database --cron-expression @midnight
|
|
volumes:
|
|
- ./backup:/backup
|
|
environment:
|
|
- DB_PORT=3306
|
|
- DB_HOST=mysql
|
|
- DB_NAME=database
|
|
- DB_USERNAME=username
|
|
- DB_PASSWORD=password
|
|
## Optional: Define a cron schedule for recurring backups
|
|
- BACKUP_CRON_EXPRESSION=@midnight
|
|
## Optional: Delete old backups after a specified number of days
|
|
#- BACKUP_RETENTION_DAYS=7
|
|
|
|
# Ensure the mysql-bkup container is connected to the same network as your database
|
|
networks:
|
|
- web
|
|
|
|
networks:
|
|
web:
|
|
```
|
|
|
|
---
|
|
|
|
## Key Notes
|
|
|
|
- **Cron Expression**: Use the `--cron-expression (-e)` flag or `BACKUP_CRON_EXPRESSION` environment variable to define the backup schedule. For example:
|
|
- `@midnight`: Runs the backup daily at midnight.
|
|
- `0 1 * * *`: Runs the backup daily at 1:00 AM.
|
|
- **Backup Retention**: Optionally, use the `BACKUP_RETENTION_DAYS` environment variable to automatically delete backups older than a specified number of days.
|