/mgob

MongoDB dockerized backup agent. Runs schedule backups with retention, S3 & SFTP upload, notifications, instrumentation with Prometheus and more.

Primary LanguageGoMIT LicenseMIT

mgob

Release Build Status Docker Pulls GitHub release GitHub Sponsors GitHub

MGOB is a MongoDB backup automation tool designed using Go. This fork introduces a variety of enhancements over the original repository by stefanprodan, which is set to be archived. Check out the archival discussion here.

Note: New features are being added to this fork exclusively.

Enhancements in This Fork

  • Backup validation
  • Retry mechanism for backups
  • MS Team notification support
  • Updated email notification mechanism addressing the certificate issue
  • Go updated to 1.21
  • Dependencies updated
  • Introduced warnOnly option for all notification channels
  • Integrated Github Actions for CI/CD
  • New Helm Chart with enhanced metrics, liveness probe, and other features
  • Multiple Docker image releases catering to different backup solutions
  • Option to skip local backup when retention is set to 0 (#42, Credit: @aneagoe)
  • On-demand restore API

Helm Chart

helm repo add maxisam https://maxisam.github.io/mgob/
helm repo update
helm upgrade --install mgob maxisam/mgob --namespace mgob --create-namespace

Original Features

  • schedule backups
  • local backups retention
  • upload to S3 Object Storage (Minio, AWS, Google Cloud, Azure)
  • upload to gcloud storage
  • upload to SFTP
  • upload to any Rclone supported storage
  • notifications (Email, Slack)
  • instrumentation with Prometheus
  • http file server for local backups and logs
  • distributed as an Alpine Docker image

Installation

MGOB is available on Docker Hub at maxisam/mgob.

Supported tags:

  • maxisam/mgob:latest latest stable release

Compatibility matrix:

MGOB MongoDB
stefanprodan/mgob:0.9 3.4
stefanprodan/mgob:0.10 3.6
stefanprodan/mgob:1.0 4.0
stefanprodan/mgob:1.1 4.2
maxisam/mgob:1.10 5.0
maxisam/mgob:1.12 7.0

Docker:

docker run -dp 8090:8090 --name mgob \
    -v "/mgob/config:/config" \
    -v "/mgob/storage:/storage" \
    -v "/mgob/tmp:/tmp" \
    -v "/mgob/data:/data" \
    stefanprodan/mgob \
    -LogLevel=info

Configuration

Define a backup plan (yaml format) for each database you want to backup inside the config dir. The yaml file name is being used as the backup plan ID, no white spaces or special characters are allowed.

READ MORE

On-Demand Operations

MGOB exposes a set of HTTP endpoints for on-demand operations like backup, restore, status, metrics, and version.

READ MORE: On-Demand Operations

Logs

READ MORE: Logs

Metrics

READ MORE: Metrics

Restore

READ MORE: Restore

Special Thanks

  • stefanprodan for the original repository
  • First awesome sponsor!!

Sponsors GitHub Sponsors