一、备份与恢复方案
Percona Backup for MongoDB 是一个开源、分布式和低影响的解决方案,用于MongoDB分片集群和副本集的一致备份。从版本1.7.0开始,Percona Backup for MongoDB支持物理和逻辑备份和恢复,仅支持对逻辑备份进行时间点恢复。
参考官方:Percona Backup for MongoDB版本
Percona Backup for MongoDB兼容以下版本的MongoDB:
1、对于逻辑备份- Percona Server For MongoDB和MongoDB Community v4.0及更高版本,并启用了MongoDB Replication。
2、对于物理备份—Percona Server For MongoDB,从4.2.15-16、4.4.6-8、5.0及更高版本开始,启用MongoDB Replication并配置WiredTiger作为存储引擎。
二、安装PBM工具
参考官方:Installing Percona Backup for MongoDB
2.1、环境信息
《Linux运维总结:Centos7.6部署二进制mongodb4.2.23三节点副本集群》
主机IP | 操作系统 | 服务名称 | 版本号 | 其它说明 |
---|---|---|---|---|
192.168.1.191(主节点) | Centos7.6 | mongodb | 4.2.23 | 副本集群 |
192.168.1.192(从节点) | Centos7.6 | mongodb | 4.2.23 | 副本集群 |
192.168.1.193(仲裁节点) | Centos7.6 | mongodb | 4.2.23 | 副本集群 |
2.2、安装percona-backup-mongodb
说明:当前安装的percona-backup-mongodb版本为2.0.2。
[root@localhost ~]# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@localhost ~]# percona-release enable pbm release
[root@localhost ~]# yum install percona-backup-mongodb -y
2.3、在MongoDB中配置身份验证
1、创建允许对任何资源执行任何操作的角色
db.getSiblingDB("admin").createRole({ "role": "pbmAnyAction",
"privileges": [
{ "resource": { "anyResource": true },
"actions": [ "anyAction" ]
}
],
"roles": []
});
说明:角色名称可任意设置,如下图所示,即可表示pbmAnyAction角色创建成功。
2、创建用户并将创建的角色分配给该用户
#2、Create the user and assign the role you created to it
db.getSiblingDB("admin").createUser({user: "pbmuser",
"pwd": "secretpwd",
"roles" : [
{ "db" : "admin", "role" : "readWrite", "collection": "" },
{ "db" : "admin", "role" : "backup" },
{ "db" : "admin", "role" : "clusterMonitor" },
{ "db" : "admin", "role" : "restore" },
{ "db" : "admin", "role" : "pbmAnyAction" }
]
});
说明:用户名和密码可任意设置。如下图所示,即可表示pbmuser用户创建成功。
3、为pbm-agent设置MongoDB连接URL
# 说明:replicaSet=mongodb_cluster为副本集的名称
#1、修改变量文件
[root@localhost ~]# cat /etc/sysconfig/pbm-agent
PBM_MONGODB_URI="mongodb://pbmuser:secretpwd@192.168.1.191:27017/?authSource=admin&replicaSet=mongodb_cluster"
#2、添加环境变量
[root@localhost ~]# vim /etc/profile
export PBM_MONGODB_URI="mongodb://pbmuser:secretpwd@192.168.1.191:27017/?authSource=admin&replicaSet=mongodb_cluster"
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $PBM_MONGODB_URI
mongodb://pbmuser:secretpwd@192.168.1.191:27017/?authSource=admin&replicaSet=mongodb_cluster
2.4、开启备份监听的agent
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start pbm-agent
[root@localhost ~]# systemctl status pbm-agent
如下图所示:
2.5、配置备份目的地
说明:pbm备份支持AWS s3存储类型、Microsoft Azure Blob存储类型、和本地文件系统。如下图所示:
如下图所示:
1、创建配置文件
#1、创建配置文件
[root@localhost ~]# touch /etc/pbm_config.yaml
[root@localhost ~]# cat /etc/pbm_config.yaml
storage:
type: filesystem
filesystem:
path: /data/backup
2、创建备份目录
[root@localhost ~]# mkdir -p /data/backup
[root@localhost ~]# chown mongod.mongod /data/backup -R
3、插入配置文件
[root@localhost pkgs]# pbm config --file=/etc/pbm_config.yaml
如下图所示:
三、备份操作
3.1、开始备份
[root@localhost ~]# pbm backup
3.2、查看备份情况
[root@localhost ~]# pbm list
如下图所示:
3.3、查看备份日志
[root@localhost ~]# pbm --event=backup
如下图所示:
说明:其它操作请参考帮助命令。
四、恢复操作
3.1、查看备份情况
[root@localhost ~]# pbm list
如下图所示:
3.2、开始恢复
[root@localhost ~]# pbm restore 2022-12-09T11:55:43Z
3.3、查看恢复日志
[root@localhost ~]# pbm logs --event=restore
如下图所示:
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》