2024-08-03 16:03:17 +02:00
---
title: Backup
layout: default
parent: How Tos
nav_order: 1
---
# Backup database
2024-08-10 10:50:00 +02:00
To backup the database, you need to add `backup` command.
2024-08-03 16:03:17 +02:00
{: .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.
It handles __recurring__ backups of mysql database on Docker and can be deployed as __CronJob on Kubernetes__ using local, AWS S3 or SSH compatible storage.
```yml
services:
mysql-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/mysql-bkup/releases
# for a list of available releases.
image: jkaninda/mysql-bkup
container_name: mysql-bkup
2024-08-10 10:50:00 +02:00
command: backup -d database
2024-08-03 16:03:17 +02:00
volumes:
- ./backup:/backup
environment:
- DB_PORT=3306
- DB_HOST=mysql
- DB_NAME=database
- DB_USERNAME=username
- DB_PASSWORD=password
# mysql-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" \
2024-08-10 10:50:00 +02:00
jkaninda/mysql-bkup backup -d database_name
2024-08-03 16:03:17 +02:00
```
2024-09-28 08:30:53 +02:00
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.
2024-08-03 16:03:17 +02:00
```yml
services:
mysql-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/mysql-bkup/releases
# for a list of available releases.
image: jkaninda/mysql-bkup
container_name: mysql-bkup
2024-09-28 08:30:53 +02:00
command: backup -d database --cron-expression "0 1 * * *"
2024-08-03 16:03:17 +02:00
volumes:
- ./backup:/backup
environment:
- DB_PORT=3306
- DB_HOST=mysql
- DB_NAME=database
- DB_USERNAME=username
- DB_PASSWORD=password
2024-09-28 08:30:53 +02:00
- BACKUP_CRON_EXPRESSION=0 1 * * *
2024-08-03 16:03:17 +02:00
# mysql-bkup container must be connected to the same network with your database
networks:
- web
networks:
web:
```