Code Monkey home page Code Monkey logo

docker-automysqlbackup's Introduction

Docker AutoMySQLBackup

A lightweight, Alpine linux based image for creating and managing scheduled MySQL backups. Runs a slightly modified AutoMySQLBackup utility.

Supported tags and respective Dockerfile links

Version

This image uses AutoMySQLBackup 2.5 from Debian Linux source repository as a base, branched at 2.6+debian.4-1 tag. Original source can be cloned from git://anonscm.debian.org/users/zigo/automysqlbackup.git or taken at the appropriate Debian package page.

Custom modifications:

  • passed logging to stdout/stderr
  • removed error logs mailing code
  • made default configuration more suitable for docker container

Image usage

Let's create a bridge network and start a MySQL container as an example.

docker network create dbtest
docker run --name some-mysql --network dbtest \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

For the basic one-shot backup, you can run a container like this:

docker run --network dbtest \
    -v '/var/lib/automysqlbackup:/backup' \
    -e DBHOST=some-mysql \
    -e DBNAMES=all \
    -e USERNAME=root \
    -e PASSWORD=my-secret-pw \
    -e DBNAMES=all \
    automysqlbackup

Container will create dumps of all datebases from MySQL inside /var/lib/automysqlbackup directory and exit.

To run container in a scheduled mode, populate CRON_SCHEDULE environment variable with a cron expression.

docker run --network dbtest \
    -v '/var/lib/automysqlbackup:/backup' \
    -e DBHOST=some-mysql \
    -e DBNAMES=all \
    -e USERNAME=root \
    -e PASSWORD=my-secret-pw \
    -e DBNAMES=all \
    -e CRON_SCHEDULE="0 0 * * *" \
    automysqlbackup

Instead of passing environment variables though docker, you can also mount a file with their declarations as volume. See defaults file in this image's git repository for the example.

docker run --network dbtest \
    -v '/var/lib/automysqlbackup:/backup' \
    -v '/etc/default/automysqlbackup:/etc/default/automysqlbackup:ro' \
    automysqlbackup

Usage with docker-compose

For the example of using this image with docker-compose, see docker-compose.yml file in the image's repository.

Quick tips:

  • You can call automysqlbackup binary directly for the manual backup: docker-compose exec mysqlbackup automysqlbackup
  • Use only YAML dictionary for passing CRON_SCHEDULE environment variable CRON_SCHEDULE: "0 0 * * *" as YAML sequence - CRON_SCHEDULE="0 * * * *" will preserve quotes breaking go-cron (Issue #1).

Environment variables

CRON_SCHEDULE

If set to cron expression, container will start a cron daemon for scheduled backups.

USERNAME

Username to access the MySQL server.

PASSWORD

Password to access the MySQL server.

DBHOST

Host name (or IP address) of MySQL server.

DBPORT

Port of MySQL server.

DBNAMES

List of space separated database names for Daily/Weekly Backup. Set to all for all databases.

Default value: all

BACKUPDIR

Backup directory location. Folders inside this one will be created (daily, weekly, etc.), and the subfolders will be database names.

Default value: /backup

MDBNAMES

List of space separated database names for Monthly Backups.

Will mirror DBNAMES if DBNAMES set to all.

DBEXCLUDE

List of DBNAMES to exclude if DBNAMES are set to all (must be in " quotes).

CREATE_DATABASE

Include CREATE DATABASE in backup?

Default value: yes

SEPDIR

Separate backup directory and file for each DB? (yes or no).

Default value: yes

DOWEEKLY

Which day do you want weekly backups? (1 to 7 where 1 is Monday).

Default value: 6

COMP

Choose Compression type. (gzip or bzip2)

Default value: gzip

COMMCOMP

Compress communications between backup server and MySQL server?

Default value: no

LATEST

Additionally keep a copy of the most recent backup in a seperate directory.

Default value: no

MAX_ALLOWED_PACKET

The maximum size of the buffer for client/server communication. e.g. 16MB (maximum is 1GB)

SOCKET

For connections to localhost. Sometimes the Unix socket file must be specified.

PREBACKUP

Command to run before backups

POSTBACKUP

Command run after backups

ROUTINES

Backup of stored procedures and routines

Default value: yes

License

Similar to the original automysqlbackup script, all sources for this image are licensed under GPL-2.0.

docker-automysqlbackup's People

Contributors

thomasgoirand avatar selim13 avatar

Watchers

James Cloos avatar Filip Melik avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.