我们在Per雷竞技下载官网cona讨论了很多关于Kubernetes Operators如何自动化部署和管理数据库的问题。操作符无缝地处理大量Kubernetes原语和数据库配置的点点滴滴,所有这些从运营团队中移除辛劳,并为开发人员提供自助服务体验。
今天我们想带你去后台,看看幕后到底发生了什么。我们将回顾在实施物理备份时所面临的技术决策和障碍雷竞技下载官网Percona Operator for MongoDB version 1.14.0.该功能现在处于技术预览阶段。
为什么
雷竞技下载官网MongoDB的Percona服务器可以处理pb级的数据。我们运营商的用户也希望在Kubernetes中托管巨大的数据集。但是,使用逻辑恢复恢复方法将花费大量时间,并可能导致违反SLA。
我们的运营商使用雷竞技下载官网MongoDB的Percona备份(PBM)作为备份和恢复数据库的工具。我们利用逻辑备份已经有一段时间了。几个月前在PBM中引入了物理备份,通过这些备份,我们看到恢复时间有了显著改善这篇博文,MongoDB的Percona备份支持物理备份雷竞技下载官网):
因此,如果我们想要降低大数据集的恢复时间目标(Recovery Time Objective, RTO),我们必须在Operator中提供物理备份和恢复。
如何
基础知识
当您在集群中启用备份时,操作员将一个sidecar容器添加到每个replset pod(如果启用了分片,则包括Config Server pod)以运行pbm-agent。这些代理侦听PBM命令,并在pod上执行备份和恢复。操作员打开到数据库的连接,将PBM命令发送到其集合或跟踪PBM操作的状态。
备份
启用物理备份相当简单。操作员已经知道如何启动逻辑备份,因此如果请求的备份是物理备份,我们只向PBM命令传递一个字段。
与逻辑备份不同,PBM需要直接访问mongod的数据目录,并且我们将持久卷声明(PVC)挂载在PBM sidecar容器上。通过这两个简单的更改,操作员可以执行物理备份。但是,无论您是从理论还是从经验(哎呀!)知道,如果您不能恢复备份,备份是无用的。
恢复
启用物理恢复并不容易。在物理恢复方面,PBM有两个主要的局限性:
1.PBM将在恢复期间停止mongod进程。
2.在备份文件复制到data目录后,它会运行一个临时的mongod进程。
使物理恢复成为复杂特征的是处理这两个约束的含义。
PBM杀死mongod进程
PBM杀死容器中的mongod进程,这意味着操作员在恢复期间不能从数据库查询PBM集合以跟踪它们的状态。这迫使我们在物理恢复期间使用PBM CLI工具来控制PBM操作,而不是打开到数据库的连接。
注意:我们现在正在考虑对Operator中的每个PBM操作使用相同的方法。让我们知道你的想法。
PBM杀死mongod的另一个副作用是重新启动mongod容器。mongod进程在容器中作为PID 1运行,当您终止它时,容器将重新启动。但是PBM代理需要在mongod被杀死后继续工作以完成物理恢复。为此,我们创建了一个在恢复期间使用的特殊入口点。这个特殊的入口点启动mongod,并在mongod完成后睡觉。
临时蒙神开始由PBM
当您启动物理恢复时,PBM大致执行以下操作:
1.终止mongod进程并擦除数据目录。
2.将备份文件复制到data目录。
3.启动一个临时mongod进程,监听一个随机端口,以执行对oplog的操作。
4.终止mongod和PBM代理进程。
有关完整的演练,请参见MongoDB的Percona备份支持物理备份雷竞技下载官网.
从操作者的角度来看,这个临时mongod进程的问题在于它的版本。我们在Operator中支持MongoDB 4.4、MongoDB 5.0和现在的MongoDB 6.0,临时mongod需要与集群中运行的MongoDB版本相同。这意味着我们要么在PBM docker映像中包含mongod二进制文件,然后为每个版本组合创建一个单独的映像,要么找到另一个解决方案。
嗯……我们发现了:在恢复之前,我们将PBM二进制文件复制到mongod容器中。这样,PBM代理可以随心所欲地终止和启动mongod进程,并且可以保证与集群的版本相同。
把它们联系在一起
到目前为止,似乎每个问题的解决方案都是随机的。PBM、CLI、特殊入口点、复制PBM二进制文件……它们是如何工作的?
当你开始一个物理恢复时,Operator将每个replset的StatefulSet修补为:
1.将mongod容器入口点切换到我们新的特殊入口点:它将在后台启动pbm-agent,然后启动mongod进程。脚本本身将以PID 1运行,在mongod被杀死后,它将永远休眠。
2.注入一个新的init容器:这个init容器将把PBM和PBM -agent二进制文件复制到mongod容器中。
3.移除PBM侧车:我们必须确保每个分离舱中只有一个PBM -代理正在运行。
直到所有的StatefulSets (mongos除外)被更新,PerconaServerMongoDBRest雷竞技下载官网ore对象都处于“等待”状态。一旦它们全部更新,操作符就开始恢复,恢复对象进入请求状态,然后进入运行状态,最后进入就绪或错误状态。
结论
运营商简化了应用程序在Kubernetes上的部署和管理。物理备份和恢复是MongoDB集群中非常流行的特性。使用Percona backup for MongoDB从物理备份恢复有雷竞技下载官网多个手动步骤。本文展示了在这个看似简单的步骤背后隐藏着什么样的复杂性。
尝试Mo雷竞技下载官网ngoDB的Percona Operator




