mongo备份job思路与实现

25 阅读1分钟

版本控制:(C、A、M、D:创建、增加、修订、删除)

版本号变更日志变更类型(C/A/M/D)修改人摘要备注
1.02024-12-19Cxxx



一、思路

使用mongodump 工具对OCS mongo进行逻辑备份,不产生中间文件,通过 zstd 压缩后直接转储到S3上。

  1. mongodump,mongo备份工具

  2. rclone,传输到s3

  3. zstd压缩

  4. 管道做拼接,实现不产生中间文件




二、实现

关键shell部分如下

#!/bin/bash -ex

cd $WORKSPACE
source /etc/profile.d/rclone.sh

S3_BUCKET_NAME="bm-s3-xfz:/sox-dba-backup/mongodb/ocs"
# 7天前的时间格式
seven_days_ago=$(date -d "7 days ago" +%Y-%m-%d)

# 全量备份
/data/mongodb/27017/bin/mongodump \
  --host ${src_ip} --port ${src_port} \
  --username ${src_user} --password ${src_passwd} --authenticationDatabase ${src_authdb} \
  --oplog --archive \
| zstd -c \
| rclone rcat --s3-chunk-size 100Mi ${S3_BUCKET_NAME}/$(date +'%F_%H').zst


# 显示7天前的文件大小
rclone size bm-s3-xfz:/sox-dba-backup/mongodb/ocs/${seven_days_ago}_00.zst

# 删除
rclone delete bm-s3-xfz:/sox-dba-backup/mongodb/ocs/${seven_days_ago}_00.zst



三、目前OCS mongo的备份任务

http://192.21.141.48:8080/job/MongoDB/job/ocs.mongo.dump.timedTask/

OCS mongo的备份与保留机制:

  1. 每天零点备份

  2. 备份保留7天




四、补充文档

  1. S3对象存储 略

  2. mongo工具 www.percona.com/blog/stream…