Sign inSign up

peetvandesande/mariadb-backup

By peetvandesande

•Updated 9 months ago

MariaDB backup sidecar image

Image
Databases & storage
0

1.9K

peetvandesande/mariadb-backup repository overview

⁠🐘 mariadb-backup

Docker Pulls Image Size GitHub License

Lightweight MariaDB backup container that creates timestamped database dumps.
No rotation, pruning, encryption, or cloud upload — bring your own retention policy.


ā šŸš€ Quick Usage

⁠One-off backup
docker run --rm \
  --network app_default \       # Needed to connect to MariaDB server
  -v /var/backups:/backups \
  -e MARIADB_HOST=db \
  -e MARIADB_USER=myuser \
  -e MARIADB_PASSWORD=mypass \
  -e MARIADB_DATABASE=mydb \
  -e RUN_ONCE=1 \
  peetvandesande/mariadb-backup
⁠Scheduled backup ( daily at 02:00 by default )
docker run -d --name mariadb-backup \
  --network app_default \
  -v /var/backups:/backups \
  -e MARIADB_HOST=db \
  -e MARIADB_USER=myuser \
  -e MARIADB_PASSWORD=mypass \
  -e MARIADB_DATABASE=mydb \
  peetvandesande/mariadb-backup

Override schedule:

-v ./crontab:/etc/crontabs/root:ro

To run a backup before cron starts:

-e RUN_BACKUP_ON_START=1

⁠🧰 Restore

Restore the latest matching dump:

docker run --rm \
  --network app_default \
  -v /var/backups:/backups \
  -e MARIADB_HOST=db \
  -e MARIADB_USER=myuser \
  -e MARIADB_PASSWORD=mypass \
  -e MARIADB_DATABASE=mydb \
  peetvandesande/mariadb-backup restore

Restore a specific dump file:

docker run --rm \
  --network app_default \
  -v /var/backups:/backups \
  -e MARIADB_HOST=db \
  -e MARIADB_USER=myuser \
  -e MARIADB_PASSWORD=mypass \
  -e MARIADB_DATABASE=mydb \
  peetvandesande/mariadb-backup restore /backups/mydb-20251106.sql.gz

ā āš™ļø Environment Variables

VariableDefaultDescription
MARIADB_USERrequiredMariaDB username
MARIADB_PASSWORDrequiredMariaDB password
MARIADB_DATABASErequiredDatabase name to dump
MARIADB_HOSTdbHostname or container name of MariaDB server
MARIADB_PORT3306MariaDB port
BACKUP_NAME_PREFIX(unset)Prefix for dump filenames
BACKUPS_DIR/backupsDirectory for dump storage
COMPRESSgzCompression type: gz, bz2, zst, or none
COMPRESS_LEVEL(auto)Compression level for zst compressor
VERIFY_SHA25611 = write .sha256 checksum file
CHOWN_UID(unset)Apply user ownership (if set)
CHOWN_GID(unset)Apply group ownership (if set)
CHMOD_MODE(unset)Apply mode to dump and checksum files e.g. 0640
RUN_ONCE0Run backup once and exit
RUN_BACKUP_ON_START0Run backup before cron starts
⁠Ownership Logic Example
# Force UID=34, keep existing GID:
-e CHOWN_UID=34

# Force GID=34, keep existing UID:
-e CHOWN_GID=34

# Force both explicitly:
-e CHOWN_UID=34 -e CHOWN_GID=34

ā šŸ“¦ Output Format

/backups/
ā”œā”€ā”€ mydb-20251106.sql.gz
└── mydb-20251106.sql.gz.sha256

ā šŸ·ļø Tags

TagDescription
alpine (default)Smallest runtime image
devWork-in-progress branch images
<version>Tagged stable releases

⁠🐳 Docker Compose Example

services:
  mariadb-backup:
    image: peetvandesande/mariadb-backup
    environment:
      MARIADB_HOST: db
      MARIADB_USER: myuser
      MARIADB_PASSWORD: mypass
      MARIADB_DATABASE: mydb
      VERIFY_SHA256: 1
      CHOWN_MODE: "0640"
    volumes:
      - ./backups:/backups
    depends_on:
      - db

  db:
    image: mariadb:11.1
    environment:
      MARIADB_USER: myuser
      MARIADB_PASSWORD: mypass
      MARIADB_DATABASE: mydb
    volumes:
      - ./data:/var/lib/mysql

This setup runs a MariaDB container and a backup container side by side, with backups stored under ./backups on the host.


Full docs and restore guide available here:
→ https://github.com/peetvandesande/mariadb-backup/tree/main/docs/⁠

Tag summary

Content type

Image

Digest

sha256:5c39725ab…

Size

15.4 MB

Last updated

9 months ago

docker pull peetvandesande/mariadb-backup