Go to file
kolaente 7c4d6aa855
continuous-integration/drone/push Build is passing Details
update alpine
2020-02-19 20:53:28 +01:00
.drone.yml Add drone 2020-02-19 20:47:52 +01:00
.gitignore added gitignore 2018-01-30 22:20:16 +01:00
Dockerfile update alpine 2020-02-19 20:53:28 +01:00
LICENSE added license 2018-01-30 22:21:00 +01:00
README.md Add license to readme 2020-02-19 20:51:49 +01:00
backup.sh fixed backup creation 2019-02-06 16:15:28 +01:00
backup_hosts.json added configurable amount of backups to keep 2018-01-31 14:10:28 +01:00
run.sh edited runscript to show cron config on startup 2018-01-31 14:40:04 +01:00

README.md

Database Backup

A simple script to backup databases from multiple hosts at once.

This script backups in a configurable schedule all databases on multiple available hosts. It was built to run in docker and have a clean way to backup database containers.

Usage

  1. Create a configuration file with all hosts and credentials you want to backup
  2. Point the script to it (See environment variables below). By default, it searches in the default directory for a file called backup_hosts.json.

Configuration

A configuration file with all defaults looks like this:

[
   {
      "host":"localhost",
      "user":"root",
      "password":"",
      "port": 3306
   }
]

You can omit any field to you use the default value.

For example, a configuration which backups a db on localhost with the root user and password 1234 on the default port 3306 would look like this:

[
   {
      "password":"1234",
   }
]

Usage with docker

A docker image with the script is available, to integrate nicely with existing docker infrastructure.

Note: You need to make sure that all database containers can be reached by the script over network. The easiest way to achieve this is to create an external network and put the backup container and the database container in it.

Docker Compose Example

This will mount the config from the config and backup folders in the same directory.

version: '2'
services:
  backup:
    image: kolaente/database-backup
    restart: unless-stopped
    environment:
      CRON_TIME: 0 */3 * * *
      DB_BACKUP_MAX: '36'
    volumes:
      - ./config:/config
      - ./backups:/backups
      - /etc/localtime:/etc/localtime:ro
    networks:
      - default
      - backup

networks:
  backup:
    external: true

Environment variables

  • CRON_TIME: A cron formatted string about how often the script should run
  • DB_BACKUP_MAX: How many old backups to keep before cleanup
  • DB_BACKUP_HOSTS_FILE: Where the backup configuration file is stored
  • DB_BACKUP_FOLDER: Where backups should be stored

License

(c) 2018-2020 K. Langenberg. Usage of this software is guarded by the GPLv3 which can be found in this repo.