当前位置: 首页 > news >正文

mongodb生产备份工具PBM

如果你的 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: filesystemfilesystem:path: /data/pbm_back # 备份目录,所有节点都需要有# Point-in-Time Recovery配置,开启pitr其实就没有必要使用增量备份了,相当于开启了自动持续增量备份
pitr:enabled: trueoplogSpanMin: 10  # oplog至少保留10天compression: gzip# 备份压缩
backup:compression: gzipcompressionLevel: 6

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

pbm config --file /etc/pbm-config.yamlsystemctl 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
http://www.lryc.cn/news/576263.html

相关文章:

  • Selenium基本用法
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • 智能助手(利用GPT搭建智能系统)
  • Vivado 五种仿真类型的区别
  • Javaweb - 6 BOM 编程 和 DOM 编程
  • python打卡day56
  • VUE使用过程中的碰到问题记录
  • 【深度学习新浪潮】MoE技术入门(简要版)
  • Linux基本指令篇 —— tac指令
  • Apache Kafka 面试应答指南
  • 黑马JVM解析笔记(五):深入理解Java字节码执行机制
  • python训练day43 复习日
  • 10【认识文件系统】
  • 基于springboot的火锅店点餐系统
  • 遥感图像语义分割1-安装mmsegmentation
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • Python Selenium 滚动到特定元素
  • .NET MAUI跨平台串口通讯方案
  • 【github】从本地更新仓库里的文件笔记
  • C++基础:动态内存分配、输入输出与命名空间详解
  • 如何构建个人AIagent
  • 命名数据网络 | 签名(Signature)
  • 视觉疲劳检测如何优化智能驾驶的险情管理
  • 杭州西湖断桥不断:3D扫描还原‘残雪‘视觉骗局
  • 从0到100:房产中介小程序开发笔记(中)
  • 为什么python处理csv文件将某个值替换成另一个值并另存后,csv文件的大小减小了一半
  • 详解HashMap底层原理
  • 三、java项目自动部署流水线搭建
  • Java--数组
  • 如何使用免费软件写论文?六个免费论文生成软件使用指南