mongodb生产备份工具PBM

发布于:2025-06-28 ⋅ 阅读:(20) ⋅ 点赞:(0)

如果你的 MongoDB 数据量特别大(例如几十 GB、TB 级别),普通的 mongodump/mongorestore 会显得缓慢且资源消耗大,不适合生产级别大数据集。下面是当前 MongoDB 社区和企业广泛使用的几种备份方案对比和推荐:

工具 是否官方 适合场景 优点 缺点
mongodump / mongorestore ✅ 是官方 小数据量、开发测试、结构迁移 简单易用,文档丰富 速度慢、资源占用高、大数据不适合
mongodb-consistent-backup ✅ 官方(老工具) 副本集或分片集的大数据备份 支持一致性快照,适合副本集 停止维护(可替代用 mongodump + oplog)
Percona Backup for MongoDB ❇️ 第三方(Percona 出品) 🚀 TB级数据备份利器 支持并发、压缩、分片、增量备份 初始学习成本略高
mongodump --oplog + rsync/snapshot ✅ + 通用 半热备份,有一定容错 灵活组合方式 维护复杂
文件系统快照 + Oplog ❌(系统级) 企业环境,需高 IO 磁盘/文件系统支持 几乎不影响业务,速度最快 需要快照技术支持,如 LVM、ZFS

公司的数据量达到了2T以上,这里只能使用PBM进行备份

https://www.percona.com/downloads
选择对应的版本即可,如果是4.0建议选择2.0.x版本
在这里插入图片描述
所有节点使用yum安装好了以后,编写一个启动服务/etc/systemd/system/pbm-agent.service

[Unit]
Description=Percona Backup for MongoDB Agent
Wants=network.target
After=network.target mongod.service

[Service]
Type=simple
# 推荐使用有权限访问MongoDB的用户,且该用户对备份目录有读写权限
# 如果 mongod 以 'mongod' 用户运行,这里也用 'mongod'
User=mongod 

# 核心命令:指定 pbm-agent 的路径和 MongoDB 连接 URI
# 这个 URI 必须能让 agent 连接到整个副本集
ExecStart=/usr/local/bin/pbm-agent --mongodb-uri="mongodb://user:passwd@localhost:27017/?replicaSet=rs0"  # 2.0.x以上可以写集群地址

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

然后修改所有节点的pbm配置文件/etc/pbm-config.yaml

storage:
  type: filesystem
  filesystem:
    path: /data/pbm_back # 备份目录,所有节点都需要有

# Point-in-Time Recovery配置,开启pitr其实就没有必要使用增量备份了,相当于开启了自动持续增量备份
pitr:
  enabled: true
  oplogSpanMin: 10  # oplog至少保留10天
  compression: gzip

# 备份压缩
backup:
  compression: gzip
  compressionLevel: 6

完成执行如下命令,启动服务,所有节点都需要

pbm config --file /etc/pbm-config.yaml

systemctl daemon-reload
# 启动服务
systemctl start pbm-agent

在备份节点上执行备份命令进行第一次全备测试

pbm backup

# 完成后执行,查看备份结果,如图表示成功
pbm list

在这里插入图片描述
接下来将命令加入crontab一周备份一次即可

[root@localhost pbm_all]# crontab -l
# mongo全量备份+PITR
0 0 * * 6 /usr/local/bin/pbm backup >> /data/pbm_all/logs/backup.log 2>&1


网站公告

今日签到

点亮在社区的每一天
去签到