mirror of
https://github.com/jkaninda/mysql-bkup.git
synced 2025-12-06 13:39:41 +01:00
97 lines
3.0 KiB
Markdown
97 lines
3.0 KiB
Markdown
---
|
|
title: Run multiple database backup schedules in the same container
|
|
layout: default
|
|
parent: How Tos
|
|
nav_order: 11
|
|
---
|
|
|
|
|
|
# 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:
|
|
|
|
```yaml
|
|
# Optional: Define a global cron expression for scheduled backups
|
|
# cronExpression: "@every 20m"
|
|
cronExpression: ""
|
|
|
|
databases:
|
|
- host: mysql1
|
|
port: 3306
|
|
name: database1
|
|
user: database1
|
|
password: password
|
|
path: /s3-path/database1 # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
|
|
|
|
- host: mysql2
|
|
port: 3306
|
|
name: lldap
|
|
user: lldap
|
|
password: password
|
|
path: /s3-path/lldap # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
|
|
|
|
- host: mysql3
|
|
port: 3306
|
|
name: keycloak
|
|
user: keycloak
|
|
password: password
|
|
path: /s3-path/keycloak # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
|
|
|
|
- host: mysql4
|
|
port: 3306
|
|
name: joplin
|
|
user: joplin
|
|
password: password
|
|
path: /s3-path/joplin # For SSH or FTP, define the full path (e.g., /home/toto/backup/)
|
|
```
|
|
|
|
---
|
|
|
|
## 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:
|
|
# 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 #--config /backup/config.yaml # config file
|
|
volumes:
|
|
- ./backup:/backup # Mount the backup directory
|
|
- ./config.yaml:/backup/config.yaml # Mount the configuration file
|
|
environment:
|
|
## Specify the path to the configuration file
|
|
- BACKUP_CONFIG_FILE=/backup/config.yaml
|
|
# Ensure the pg-bkup container is connected to the same network as your database
|
|
networks:
|
|
- web
|
|
|
|
networks:
|
|
web:
|
|
```
|
|
|
|
---
|
|
|
|
## 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.
|