使用mgob 進行mongodb 數據庫備份


mgob 是就有golang 編寫的mongodb 數據庫備份工具,支持cron 調度,基於cli (mongodump,minio mc ...) 各種工具以及rest api 的模式進行
數據的備份管理,實際上我們基於webhook 的模式比如(adnanh/webhook)也是可以解決的,對於任務調度的我們可以基於crontab 方式處理
以下是一個簡單的配置學習

環境准備

  • docker-compose 文件 
version: "3"
services: 
  mgob:
    image: dalongrong/mgob
    command: -LogLevel=info
    restart: always
    ports: 
    - "8090:8090"
    volumes: 
    - "./config:/config"
    - "./storage:/storage"
    - "./tmp:/tmp"
    - "./data:/data"
  • docker 鏡像說明
    因為官方對於中文時區處理不是很好,所以做了調整,以下是dockerfile
FROM stefanprodan/mgob
RUN apk update && apk add --no-cache tzdata \ 
   && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
   && echo "Asia/Shanghai" > /etc/timezone

配置格式

  • 官方提供了demo以下是一個簡單的demo 配置
scheduler:
  # run every day at 6:00 and 18:00 UTC
  cron: "0 6,18 */1 * *"
  # number of backups to keep locally
  retention: 14
  # backup operation timeout in minutes
  timeout: 60
target:
  # mongod IP or host name
  host: "172.18.7.21"
  # mongodb port
  port: 27017
  # mongodb database name, leave blank to backup all databases
  database: "test"
  # leave blank if auth is not enabled
  username: "admin"
  password: "secret"
  # add custom params to mongodump (eg. Auth or SSL support), leave blank if not needed
  params: "--ssl --authenticationDatabase admin"
# S3 upload (optional)
s3:
  url: "https://play.minio.io:9000"
  bucket: "backup"
  accessKey: "Q3AM3UQ867SPQQA43P2F"
  secretKey: "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
  # For Minio and AWS use S3v4 for GCP use S3v2
  api: "S3v4"
# GCloud upload (optional)
gcloud:
  bucket: "backup"
  keyFilePath: /path/to/service-account.json
# Azure blob storage upload (optional)
azure:
  containerName: "backup"
  connectionString: "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
# SFTP upload (optional)
sftp:
  host: sftp.company.com
  port: 2022
  username: user
  password: secret
  # you can also specify path to a private key and a passphrase
  private_key: /etc/ssh/ssh_host_rsa_key
  passphrase: secretpassphrase
  # dir must exist on the SFTP server
  dir: backup
# Email notifications (optional)
smtp:
  server: smtp.company.com
  port: 465
  username: user
  password: secret
  from: mgob@company.com
  to:
    - devops@company.com
    - alerts@company.com
# Slack notifications (optional)
slack:
  url: https://hooks.slack.com/services/xxxx/xxx/xx
  channel: devops-alerts
  username: mgob
  # 'true' to notify only on failures
  warnOnly: false

說明

mgob 具有cron + rest api + cli 的模式進行數據備份的集成,也是一種很不錯的玩法,同時基於yaml 的配置,可以方便的解決我們的實際
業務問題,開發模式值得借鑒

參考資料

https://github.com/stefanprodan/mgob


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM