Files
mysql-bkup/docs/how-tos/mutli-backup.md

97 lines
3.0 KiB
Markdown
Raw Normal View History

2024-10-09 12:23:14 +02:00
---
2025-01-13 14:56:08 +01:00
title: Run multiple database backup schedules in the same container
2024-10-09 12:23:14 +02:00
layout: default
parent: How Tos
nav_order: 11
---
2025-01-13 14:56:08 +01:00
# Multiple Backup Schedules
You can configure multiple backup schedules with different configurations by using a configuration file.
This file can be mounted into the container at `/config/config.yaml`, `/config/config.yml`, or specified via the `BACKUP_CONFIG_FILE` environment variable.
---
## Configuration File
The configuration file allows you to define multiple databases and their respective backup settings.
Below is an example configuration file:
2024-10-09 12:23:14 +02:00
```yaml
2025-01-13 14:56:08 +01:00
# Optional: Define a global cron expression for scheduled backups
# cronExpression: "@every 20m"
cronExpression: ""
2024-10-09 12:23:14 +02:00
databases:
- host: mysql1
port: 3306
name: database1
user: database1
password: password
2025-01-13 14:56:08 +01:00
path: /s3-path/database1 # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
2024-10-09 12:23:14 +02:00
- host: mysql2
port: 3306
name: lldap
user: lldap
password: password
2025-01-13 14:56:08 +01:00
path: /s3-path/lldap # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
2024-10-09 12:23:14 +02:00
- host: mysql3
port: 3306
name: keycloak
user: keycloak
password: password
2025-01-13 14:56:08 +01:00
path: /s3-path/keycloak # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
2024-10-09 12:23:14 +02:00
- host: mysql4
port: 3306
name: joplin
user: joplin
password: password
2025-01-13 14:56:08 +01:00
path: /s3-path/joplin # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
```
2025-01-13 14:56:08 +01:00
---
## Docker Compose Configuration
To use the configuration file in a Docker Compose setup, mount the file and specify its path using the `BACKUP_CONFIG_FILE` environment variable.
### Example: Docker Compose File
```yaml
services:
mysql-bkup:
2025-01-13 14:56:08 +01:00
# 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
2025-01-13 15:04:29 +01:00
command: backup #--config /backup/config.yaml # config file
volumes:
2025-01-13 14:56:08 +01:00
- ./backup:/backup # Mount the backup directory
- ./config.yaml:/backup/config.yaml # Mount the configuration file
environment:
2025-01-13 14:56:08 +01:00
## Specify the path to the configuration file
- BACKUP_CONFIG_FILE=/backup/config.yaml
2025-01-13 14:56:08 +01:00
# Ensure the pg-bkup container is connected to the same network as your database
networks:
- web
2025-01-13 14:56:08 +01:00
networks:
web:
2025-01-13 14:56:08 +01:00
```
---
## Key Notes
- **Global Cron Expression**: You can define a global `cronExpression` in the configuration file to schedule backups for all databases. If omitted, backups will run immediately.
- **Database-Specific Paths**: For SSH or FTP storage, ensure the `path` field contains the full remote path (e.g., `/home/toto/backup/`).
- **Environment Variables**: Use the `BACKUP_CONFIG_FILE` environment variable to specify the path to the configuration file.
- **Security**: Avoid hardcoding sensitive information like passwords in the configuration file. Use environment variables or secrets management tools instead.