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
2025-01-25 09:12:28 +01:00
This tool supports running multiple database backup schedules within the same container.
You can configure these schedules with different settings using a **configuration file** . This flexibility allows you to manage backups for multiple databases efficiently.
2025-01-13 14:56:08 +01:00
---
2025-01-25 09:12:28 +01:00
## Configuration File Setup
The configuration file can be mounted into the container at `/config/config.yaml` , `/config/config.yml` , or specified via the `BACKUP_CONFIG_FILE` environment variable.
### Key Features:
- **Global Environment Variables**: Use these for databases that share the same configuration.
- **Database-Specific Overrides**: Override global settings for individual databases by specifying them in the configuration file or using the database name as a suffix in the variable name (e.g., `DB_HOST_DATABASE1` ).
- **Global Cron Expression**: Define a global `cronExpression` in the configuration file to schedule backups for all databases. If omitted, backups will run immediately.
- **Configuration File Path**: Specify the configuration file path using:
- The `BACKUP_CONFIG_FILE` environment variable.
- The `--config` or `-c` flag for the backup command.
2025-01-13 14:56:08 +01:00
2025-01-25 09:12:28 +01:00
---
## Configuration File Example
2025-01-13 14:56:08 +01:00
2025-01-25 09:12:28 +01:00
Below is an example configuration file (`config.yaml` ) that defines multiple databases and their respective backup settings:
2024-10-09 12:23:14 +02:00
```yaml
2025-01-25 09:12:28 +01:00
# Optional: Define a global cron expression for scheduled backups.
# Example: "@every 20m" (runs every 20 minutes). If omitted, backups run immediately.
2025-01-13 14:56:08 +01:00
cronExpression: ""
2024-10-09 12:23:14 +02:00
databases:
2025-01-25 09:12:28 +01:00
- host: mysql1 # Optional: Overrides DB_HOST or uses DB_HOST_DATABASE1.
port: 3306 # Optional: Default is 5432. Overrides DB_PORT or uses DB_PORT_DATABASE1.
name: database1 # Required: Database name.
user: database1 # Optional: Overrides DB_USERNAME or uses DB_USERNAME_DATABASE1.
password: password # Optional: Overrides DB_PASSWORD or uses DB_PASSWORD_DATABASE1.
path: /s3-path/database1 # Required: Backup path for SSH, FTP, or S3 (e.g., /home/toto/backup/).
- host: mysql2 # Optional: Overrides DB_HOST or uses DB_HOST_LLAP.
port: 3306 # Optional: Default is 5432. Overrides DB_PORT or uses DB_PORT_LLAP.
name: lldap # Required: Database name.
user: lldap # Optional: Overrides DB_USERNAME or uses DB_USERNAME_LLAP.
password: password # Optional: Overrides DB_PASSWORD or uses DB_PASSWORD_LLAP.
path: /s3-path/lldap # Required: Backup path for SSH, FTP, or S3 (e.g., /home/toto/backup/).
- host: mysql3 # Optional: Overrides DB_HOST or uses DB_HOST_KEYCLOAK.
port: 3306 # Optional: Default is 5432. Overrides DB_PORT or uses DB_PORT_KEYCLOAK.
name: keycloak # Required: Database name.
user: keycloak # Optional: Overrides DB_USERNAME or uses DB_USERNAME_KEYCLOAK.
password: password # Optional: Overrides DB_PASSWORD or uses DB_PASSWORD_KEYCLOAK.
path: /s3-path/keycloak # Required: Backup path for SSH, FTP, or S3 (e.g., /home/toto/backup/).
- host: mysql4 # Optional: Overrides DB_HOST or uses DB_HOST_JOPLIN.
port: 3306 # Optional: Default is 5432. Overrides DB_PORT or uses DB_PORT_JOPLIN.
name: joplin # Required: Database name.
user: joplin # Optional: Overrides DB_USERNAME or uses DB_USERNAME_JOPLIN.
password: password # Optional: Overrides DB_PASSWORD or uses DB_PASSWORD_JOPLIN.
path: /s3-path/joplin # Required: Backup path for SSH, FTP, or S3 (e.g., /home/toto/backup/).
2024-10-09 12:45:55 +02:00
```
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
2024-10-09 12:45:55 +02:00
```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.
2024-10-09 12:45:55 +02:00
image: jkaninda/mysql-bkup
container_name: mysql-bkup
2025-01-13 15:04:29 +01:00
command: backup #--config /backup/config.yaml # config file
2024-10-09 12:45:55 +02:00
volumes:
2025-01-13 14:56:08 +01:00
- ./backup:/backup # Mount the backup directory
- ./config.yaml:/backup/config.yaml # Mount the configuration file
2024-10-09 12:45:55 +02:00
environment:
2025-01-13 14:56:08 +01:00
## Specify the path to the configuration file
2024-10-09 12:45:55 +02:00
- 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
2024-10-09 12:45:55 +02:00
networks:
- web
2025-01-13 14:56:08 +01:00
2024-10-09 12:45:55 +02:00
networks:
web:
2025-01-13 14:56:08 +01:00
```
---
2025-01-25 09:12:28 +01:00