Mongo DB 備份

目的

  1. 可以在不同 region 中備份 Mongo DB
  2. 備份資料可以存放到 FIBO

使用方式

  • 使用 Docker image dcasenv.order.backup:v1.0.0 執行備份

    • 需在 host crontab -e 執行容器內 /usr/local/bin/backupToFiBo.sh
    • 會將備份資料傳至 FiBo
  • 用 -itd 啟動

docker run -itd --name dcasenv.order.backup \ -e AWS_ACCESS_KEY_ID='XA2923FLNGMD9P' \ -e AWS_SECRET_ACCESS_KEY='3eCtJ1vRb4uAXgRqiRUrcyJQEzA' \ -e MONGO_DB_HOST=172.17.0.2 \ -e ENDPOINT_URL=http://fibo.lh-3.jadecloud.local \ -e S3_BUCKET=database-backup \ -e S3_PATH=dbBackup \ -e DATABASE=fixo \ -e USER_NAME=fixo \ -e PASSWORD=foxconn168 \ -e MAX_BACKUPS=10 \ -e FIBO_MAX_BACKUPS=90 \ --add-host=fibo.lh-3.jadecloud.local:10.134.202.251 \ 10.62.163.20:5000/fixoweb/dcasenv.order.backup:v1.0.0
  • 啟用排程備份
    crontab -e 執行下面指令
0 2 * * * docker exec -t dcasenv.order.backup /bin/bash /usr/local/bin/backupToFiBo.sh >> /home/centos/order/log/backup-log.txt
  • 參數說明
    • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: S3密鑰對
    • S3_BUCKET: 放置備份檔的 FiBo bucket
    • S3_PATH: 放置備份檔bucket下的路徑
    • USER_NAME, PASSWORD: 若無設定帳密直接留空
    • MAX_BACKUPS: 在 container 中留下最多備份數,如果沒設定將不在本地存留備份
    • FIBO_MAX_BACKUPS: 在 FIBO 中留下最多備份數,如果沒設定將不刪除 FIBO 中的備份
    • --add-host: 需解析 FIBO 網域

為何使用 docker 備份

  • 考慮多個環境中沒有支援 Mongo DB 備份指令,與 AWS CLI,使用 Docker 可以減少環境架設複雜度。

Image 做法

  1. 安裝 AWS Cli
  2. 加入 Mongo tool
  3. 加入 script
    • mongodump 將 MongoDB 備份
    • aws s3 cp 將備份檔案傳至 FIBO [S3命令文件]