作者:张洪
爱可生南区 DBA 团队成员,主要负责mysql故障处理及相关技术支持。爱好旅游,摄影。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
概述
Percona Backup for MongoDB(PBM)是一个针对MongoDB副本集和分片的一致性备份开源工具,它支持逻辑备份、物理备份、增量备份以及选择性备份和恢复等特性,并且支持Point-in-Time恢复到指定时间点。
但非常可惜的是物理备份相关功能目前仅适用于Percona Server for MongoDB的分支,因此下面主要围绕逻辑备份与Point-in-Time来展开,MongoDB Community版本要求4.0及以上。
架构

pbm-agent
pbm-agent用于执行备份、恢复,删除和其它操作的进程,它必须运行在集群的每个mongod实例上。包括副本集中的secondary节点以及分片集群中的config副本集。
所有pbm-agent都会监视PBM Control集合的更新,当PBM CLI对PBM Control集合产生更新时,将会在每个副本集上选择一个secondary上的pbm-agent执行操作,如果没有响应则会选择Primary上的pbm-agent执行操作。
被选中的pbm-agent将会加锁,避免同时触发备份和恢复等互斥操作。操作完成后将会释放锁,并更新PBM Control集合
PBM CLI
PBM CLI是一个操作PBM的命令行工具,它使用PBM Control集合与pbm-agent进程通信。通过更新和读取操作、日志等相应的PBM Control集合来启动和监视备份和恢复操作。同时,它也将PBM配置信息保存在PBM Control集合中。
PBM Control collections
PBM Control collections是存储配置数据和备份状态的特殊集合,分片环境存放在config副本集的admin数据库中,副本集则保存在自身的admin数据库中。
主要包含以下集合:
- admin.pbmBackups:备份的日志和状态
- admin.pbmAgents:pbm-agent的运行状态
- admin.pbmConfig:PBM的配置信息
- admin.pbmCmd:用于定义和触发操作
- admin.pbmLock:pbm-agent同步锁
- admin.pbmLockOp:用于协调不互斥的操作,如执行备份、删除备份等
- admin.pbmLog:存储pbm-agent的日志信息
- admin.pbmOpLog:存储操作ID
- admin.pbmPITRChunks:存储point-in-time恢复的oplog块
- admin.pbmPITRState:存储point-in-time恢复增量备份的状态
- admin.pbmRestores:存储还原历史记录和状态
- admin.pbmStatus:记录PBM备份状态
remote backup storge
远程备份存储是保存备份文件的位置,可以是S3存储,也可以是Filesystem。通过pbm list命令可以查看备份集。备份文件名称都是以UTC备份开始时间作为前缀,每个备份都有一个元数据文件。对于备份中的每个副本集:
- 有一个mongodump格式的压缩归档文件,它是集合的转储
- 覆盖备份时间的oplog的BSON文件转储
安装配置
下载PBM
# wget https://downloads.percona.com/downloads/percona-backup-mongodb/percona-backup-mongodb-2.0.3/binary/tarball/percona-backup-mongodb-2.0.3-x86_64.tar.gz
解压PBM
# tar -xvf percona-backup-mongodb-2.0.3-x86_64.tar.gz
配置环境变量

PerconaBackupforMongoDB(PBM)是一个开源工具,支持MongoDB的逻辑备份、物理备份、增量备份和Point-in-Time恢复。文章详细介绍了PBM的架构、工作流程、安装配置、备份与恢复操作,以及一些关键特性,如备份压缩、优先级设置等。此外,还提到了PBM在MongoDBCommunity版本中的限制和选择性备份恢复的实验性功能。
最低0.47元/天 解锁文章
657

被折叠的 条评论
为什么被折叠?



