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:

# 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

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.