Kubernetes上的数据库继续呈上升趋势。我们看到越来越多的人采用我们的雷竞技下载官网Percona Kubernetes运营商以及将工作负载迁移到云原生平台的需求。我们的运营商提供内置备份和恢复功能,但一些用户仍在寻找老式的方法,如存储级快照(即AWS EBS快照)。
在这篇博文中,你将学到:
- 如何使用Percona操作符从存储快照进行备份和恢复雷竞技下载官网
- 这种备份的风险和限制是什么
概述
卷快照了遗传算法在Kubernetes 1.20中。您的存储和容器存储接口(CSI)都必须支持快照。所有主要的云提供商都支持它们,但可能需要一些步骤才能启用。例如,对于GKE,您必须创建一个VolumeSnapshotClass资源。
在高层次上,Kubernetes上的快照是这样的:
作为PersistentVolume由实际存储卷表示,VolumeSnapshot为云卷快照的Kubernetes资源。
准备备份
首先,我们需要确定VolumeSnapshots都受支持。对于主要的云,请阅读以下文档:
- 谷歌,GKE的卷快照文档
- AWS -在EKS集群中使用EBS快照作为持久存储
- Azure。AKS CSI文件
配置了CSI并且卷快照类就绪之后,继续创建备份。
备份
确定要快照的persistentvolumecclaims (PVC)。例如,对于我的MongoDB集群,我有6个pvc: 3个复制集节点和3个配置服务器节点。
|
1
2
3.
4
5
6
7
8
|
$
kubectl
得到
聚氯乙烯
名字
状态
体积
能力
访问
模式
STORAGECLASS
年龄
mongod-数据-我的-集群-名字-cfg-0
绑定
聚氯乙烯-c9fb5afa-1 fc9-41 f9-88年f3-4 ed457f88e58
3 gi
两
标准-两
78米
mongod-数据-我的-集群-名字-cfg-1
绑定
聚氯乙烯-b9253264-f79f-4 fd0-8496-1 d88105d84e5
3 gi
两
标准-两
77米
mongod-数据-我的-集群-名字-cfg-2
绑定
聚氯乙烯-5 d462005-4015-47个广告-9269-c205b7a3dfcb
3 gi
两
标准-两
76米
mongod-数据-我的-集群-名字-rs0-0
绑定
聚氯乙烯-410年acf85-36个广告-4均-a838-f311f9dfd40b
3 gi
两
标准-两
78米
mongod-数据-我的-集群-名字-rs0-1
绑定
聚氯乙烯-a621dd8a-a671-4 a35-bb3b-3 f386550c101
3 gi
两
标准-两
77米
mongod-数据-我的-集群-名字-rs0-2
绑定
聚氯乙烯-484年bb835-0 e2d-4 a40-b5a3-1 ba340ec0567
3 gi
两
标准-两
76米
|
每个PVC都有自己的VolumeSnapshot。的例子mongod-数据-我的-集群-名字-cfg-0:
|
1
2
3.
4
5
6
7
8
|
apiVersion
:
快照
.storage
.k8s
.io/v1
种类
:
VolumeSnapshot
元数据
:
名字
:
mongod-数据-我的-集群-名字-cfg-0-提前
规范
:
volumeSnapshotClassName
:
gke-snapshotclass
源
:
persistentVolumeClaimName
:
mongod-数据-我的-集群-名字-cfg-0
|
我列出了我所有的VolumeSnapshots一个YAML清单中的对象。
|
1
2
3.
4
5
6
7
|
$
kubectl
应用
-f
https
://生
.githubusercontent
com/spron-在/博客-数据/主/体积-快照/蒙戈-volumesnapshots
.yaml
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-cfg-0-提前
创建
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-cfg-1-提前
创建
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-cfg-2-提前
创建
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-rs0-0-提前
创建
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-rs0-1-提前
创建
volumesnapshot
.snapshot
.storage
.k8s
.io/mongod-数据-我的-集群-名字-rs0-2-提前
创建
|
VolumeSnapshotContent创建并绑定到每个VolumeSnapshot资源。它的状态可以告诉你在云中快照的名称,并检查快照是否就绪:
|
1
2
3.
4
5
6
7
|
$
kubectl
得到
volumesnapshotcontent
snapcontent-0 e67c3b5-华氏551度-495 b-b775-09年d026ea3c8f
-o
yaml
…
状态
:
creationTime
:
1673260161919000000
readyToUse
:
真正的
restoreSize
:
3221225472
snapshotHandle
:
项目/雷竞技下载官网-项目/全球/快照/快照-0 e67c3b5-华氏551度-495 b-b775-09年d026ea3c8f
|
- 快照- 0 - e67c3b5 - 551 f - 495 b - b775 d026ea3c8f——09年是我在GCP中为卷保存的快照。
- readyToUse:真-表示快照已经就绪
恢复
简单地说,恢复过程如下:
- 使用快照创建持久卷。卷的名称必须与Operator使用的标准相匹配。
- 提供集群
像任何其他备份一样,它必须有适当的秘密:TLS和用户。
您也可以使用这个恢复过程来克隆现有的集群,只需确保您更改了集群、pvc和Secret名称。
从快照创建持久卷。这和常规的创造是一样的PersistentVolumeClaim,但有一个数据源指向快照的部分:
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
|
apiVersion
:
v1
种类
:
PersistentVolumeClaim
元数据
:
名字
:
mongod-数据-我的-集群-名字-rs0-0
规范
:
数据源
:
名字
:
mongod-数据-我的-集群-名字-rs0-0-提前
种类
:
VolumeSnapshot
apiGroup
:
快照
.storage
.k8s
.io
storageClassName
:
标准-两
accessModes
:
-
ReadWriteOnce
资源
:
请求
:
存储
:
3 gi
$
kubectl
应用
-f
https
://生
.githubusercontent
com/spron-在/博客-数据/主/体积-快照/蒙戈-聚氯乙烯-恢复
.yaml
persistentvolumeclaim/mongod-数据-我的-集群-名字-cfg-0
创建
persistentvolumeclaim/mongod-数据-我的-集群-名字-cfg-1
创建
persistentvolumeclaim/mongod-数据-我的-集群-名字-cfg-2
创建
persistentvolumeclaim/mongod-数据-我的-集群-名字-rs0-0
创建
persistentvolumeclaim/mongod-数据-我的-集群-名字-rs0-1
创建
persistentvolumeclaim/mongod-数据-我的-集群-名字-rs0-2
创建
|
完成之后,像往常一样启动集群。您之前创建的卷将被自动使用。恢复完成了。
风险和局限性
存储支持
Kubernetes中的存储和存储插件都必须支持卷快照。这限制了选择。除了公共云,还有一些开源的解决方案,比如Ceph (rook。IO for k8s),可以提供快照功能。
时间点恢复
时间点恢复(PITR)允许您通过恢复或回滚数据库到特定事务或时间来减少点恢复目标。
云中的卷快照以增量方式存储数据。第一个快照保存所有数据,下面的快照仅存储更改。这大大降低了您的云账单。但是快照不能提供与本机数据库机制相同的RPO。
数据一致性和损坏
快照不支持数据。在拍摄快照时,可能会发生大量事务和数据修改。例如,MongoDB中大量的写活动和同时创建复合索引可能会导致快照损坏。最大的问题是您将在恢复期间了解数据损坏。
在快照之前锁定或冻结文件系统将有助于避免此类问题。像Velero或Veeam这样的解决方案迈出了实现数据感知的第一步,可以通过自动冻结文件系统或停止复制来创建一致的快照。
雷竞技下载官网Percona Services团队使用各种工具安全地自动化快照创建。请在这里联系我们确保数据安全。
成本
公共云将快照存储在廉价的对象存储上,但为了方便起见要额外收费。例如,AWS EBS快照的价格为0.05美元/GB,而S3仅为0.023美元。这是2倍的差异,对于庞大的数据集来说,这可能会显著增加你的账单。
恢复时间
这不是一种风险或限制,而是我经常看到的一种常见误解:从快照中恢复只需要几秒钟。但事实并非如此。从快照创建EBS卷时,需要几秒钟的时间。但实际上,您刚刚创建的卷没有任何数据。有关EBS快照内部结构的详细信息,请参见这篇不错的博客文章。
结论
Kubernetes上的卷快照可用于数据库,但存在一定的限制和风险。在选择备份方案时,数据的安全性和一致性是最重要的因素。对于Pe雷竞技下载官网rcona运营商,我们强烈建议使用内置解决方案,以保证数据的一致性,并最大限度地减少恢复时间和点目标。
了解更多关于Percona Kub雷竞技下载官网ernetes操作符





