Automated and scheduled mysql database dumps, and restores. Save to local file or SMB URL.
2.7K
mysql-backup is a simple way to do MySQL database backups and restores when the database is running in a container.
It has the following features:
To run a backup, launch mysql-backup image as a container with the correct parameters. Everything is controlled by environment variables passed to the container.
For example:
docker run -d --restart=always -e DB_DUMP_FREQ=60 -e DB_DUMP_BEGIN=2330 -e DB_DUMP_TARGET=/db --link my-db-container:db -v /local/file/path:/db deitch/mysql-backup
The above will run a dump every 60 minutes, beginning at the next 2330 local time, from the database accessible in the container my-db-container.
The following are the environment variables for a backup:
You should consider the use of --env-file= to keep your secrets out of your shell history
DB_USER: username for the databaseDB_PASS: password for the databaseDB_DUMP_FREQ: How often to do a dump, in minutes. Defaults to 1440 minutes, or once per day.DB_DUMP_BEGIN: What time to do the first dump. Defaults to immediate. Must be in one of two formats:2330 or 0415+0 (immediate), +10 (in 10 minutes), or +90 in an hour and a halfDB_DUMP_DEBUG: If set to true, print copious shell script messages to the container log. Otherwise only basic messages are printed.DB_DUMP_TARGET: Where to put the dump file, should be a directory. Supports three formats:DB_DUMP_TARGET starts with a / character, will dump to a local path, which should be volume-mounted.DB_DUMP_TARGET is a URL of the format smb://hostname/share/path/ then it will connect via SMB.DB_DUMP_TARGET is a URL of the format s3://bucketname/path then it will connect via awscli.AWS_ACCESS_KEY_ID: AWS Key IDAWS_SECRET_ACCESS_KEY: AWS Secret Access KeyAWS_DEFAULT_REGION: Region in which the bucket residesIn order to perform the actual dump, mysql-backup needs to connect to the database container. You should link to the container by passing the --link option to the mysql-backup container. The linked container should always be aliased to db. E.g.:
docker run -d --restart=always -e DB_USER=user123 -e DB_PASS=pass123 -e DB_DUMP_FREQ=60 -e DB_DUMP_BEGIN=2330 -e DB_DUMP_TARGET=/db --link my-db-container:db -v /local/file/path:/db deitch/mysql-backup
The dump target is where you want the backup files to be saved. The backup file always is a gzipped file the following format:
db_backup_YYYYMMDDHHmm.sql.gz
Where:
The time used is UTC time at the moment the dump begins.
The dump target is the location where the dump should be placed, defaults to /backup in the container. Of course, having the backup in the container does not help very much, so we very strongly recommend you volume mount it outside somewhere. See the above example.
If you use a URL like smb://host/share/path, you can have it save to an SMB server. If you need loging credentials, use smb://user:pass@host/share/path.
Note that for smb, if the username includes a domain, e.g. your user is mydom\myuser, then you should use the samb convention of replacing the '' with a ';'. In other words smb://mydom;myuser:pass@host/share/path
If you use a URL like s3://bucket/path, you can have it save to an S3 bucket.
Note that for s3, you'll need to specify your AWS credentials and default AWS region via AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION
If you wish to run a restore to an existing database, you can use mysql-backup to do a restore.
You need only the following environment variables:
You should consider the use of --env-file= to keep your secrets out of your shell history
DB_USER: username for the databaseDB_PASS: password for the databaseDB_RESTORE_TARGET: path to the actual restore file, which should be a gzip of an sql dump file. The target can be an absolute path, which should be volume mounted, an smb or S3 URL, similar to the target.DB_DUMP_DEBUG: if true, dump copious outputs to the container logs while restoring.AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION will need to be defined.Examples:
docker run -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=/backup/db_backup_201509271627.sql.gz -v /local/path:/backup deitch/mysql-backupdocker run -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=smb://smbserver/share1/backup/db_backup_201509271627.sql.gz deitch/mysql-backupdocker run -e AWS_ACCESS_KEY_ID=awskeyid -e AWS_SECRET_ACCESS_KEY=secret -e AWS_DEFAULT_REGION=eu-central-1 -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=s3://bucket/path/db_backup_201509271627.sql.gz deitch/mysql-backupThis gituhub repo is the source for the mysql-backup image. The actual image is stored on the docker hub at deitch/mysql-backup, and is triggered with each commit to the source by automated build via Webhooks.
There are 2 builds: 1 for version based on the git tag, and another for the particular version number.
Released under the MIT License. Copyright Avi Deitcher https://github.com/deitch
Thanks to the kind contributions and support of TraderTools.
Content type
Image
Digest
Size
39.7 MB
Last updated
about 10 years ago
docker pull kuberdock/mysql-backup