我喜欢的一个主要特点是<一个href="//m.doggingzone.com/software/percona-kubernetes-operators">雷竞技下载官网MongoDB的Percona Operator一个><我>我>是与的积分<一个href="//m.doggingzone.com/software/mongodb/percona-backup-for-mongodb">雷竞技下载官网Percona Backup for MongoDB一个>(PBM)工具以及无需人工干预即可备份/恢复数据库的能力。Operator允许将DB备份到兼容s3的云存储,以便您可以使用AWS,蔚蓝,等。
我们的一个客户问关于集成之间Backblaze的和操作员进行备份和恢复。所以我检查了一下,发现它是s3兼容的,并提供了一个10GB的免费帐户<一个rel="nofollow" href="https://www.backblaze.com/b2/cloud-storage-b.html">云存储一个>。所以我开始用我们的Operator进行测试。另外,我在论坛上看到一些用户正在使用<一个href="https://forums.percona.com/t/backup-failing-after-update-to-2-0-1/18197/1">Backblaze云存储一个>。因此,如果每个人都想测试/使用Backblaze s3兼容的云存储来测试我们的Operator和PBM,那么编写这篇博文是为了供他们使用。
s3兼容的存储配置
运营商支持备份到s3兼容的存储。给出了备份到AWS或Azure blob的步骤<一个href="https://docs.percona.com/percona-operator-for-mongodb/backups.html">在这里一个>。你也可以试试这个。在本文中,我将重点介绍将B2云存储配置为备份位置并将其恢复到另一个部署。
让我们来配置<一个href="//m.doggingzone.com/software/mongodb/percona-server-for-mongodb">雷竞技下载官网MongoDB的Percona服务器一个>(PSMDB)使用Operator分片集群(如上所述,配置最少)<一个href="https://docs.percona.com/percona-operator-for-mongodb/minikube.html">在这里一个>)。我使用PSMDB操作符v1.12.0和PBM 1.8.1进行下面的测试。你可以在这里注册免费帐户<一个rel="nofollow" href="https://www.backblaze.com/b2/cloud-storage-b.html">https://www.backblaze.com/b2/cloud-storage-b.html一个>。然后登录你的账户。您可以首先创建一个密钥对,以便从您的操作符访问存储,如应用键”选项卡:

然后,您可以用您想要的名称创建一个存储桶,并记下s3兼容存储的详细信息,例如bucketname我>(如下图所示)和endpointUrl我>点这里发送备份文件。详情如下:<我>endpointUrl我>可以从提供商处获得,区域在?的前缀中指定endpointURL变量。

部署集群
现在让我们从<一个rel="nofollow" href="https://github.com/percona/percona-server-mongodb-operator">GitHub一个>(我使用的是v1.12.0)并配置用于部署MongoDB分片集群的文件。这里,我在使用cr-minimal.yaml为一个分片、配置数据库和一个mongodb部署一个非常小的单成员复制集设置。
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29
30.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#使用kubectl命令的别名
美元
别名
“k = kubectl”
美元
cd
雷竞技下载官网-服务器-mongodb-操作符
在cr文件中添加如下所示的备份部分。使用您的设置中的适当值
美元
猫
部署/cr-最小的
.yaml
apiVersion
:
psmdb
.雷竞技下载官网percona
com/v1-12-0
种类
:
雷竞技下载官网PerconaServerMongoDB
元数据
:
名字
:
最小的-集群
规范
:
crVersion
:
1.12.0
图像
:
雷竞技下载官网/雷竞技下载官网-服务器-mongodb
:
5.0.7-6
allowUnsafeConfigurations
:
真正的
upgradeOptions
:
应用
:
5.0-推荐
时间表
:
“0 2 * * *”
秘密
:
用户
:
最小的-集群
replset
:
-
名字
:
rs0
大小
:
1
volumeSpec
:
persistentVolumeClaim
:
资源
:
请求
:
存储
:
3 gi
分片
:
启用
:
真正的
configsvrReplSet
:
大小
:
1
volumeSpec
:
persistentVolumeClaim
:
资源
:
请求
:
存储
:
3 gi
蒙戈
:
大小
:
1
备份
:
启用
:
真正的
图像
:
雷竞技下载官网/雷竞技下载官网-备份-mongodb
:
1.8.1
serviceAccountName
:
雷竞技下载官网-服务器-mongodb-操作符
pitr
:
启用
:
假
compressionType
:
gzip
compressionLevel
:
6
存储
:
s3-我们-西
:
类型
:
s3
s3
:
桶
:
psmdbbackupBlaze
credentialsSecret
:
我的-集群-名字-备份-s3
地区
:
我们-西-004
endpointUrl
:
https
://s3
.us-西-004. backblazeb2.com/
# prefix: ""
# uploadPartSize: 10485760
# maxUploadParts: 10000
# storageClass: STANDARD
# insecureSkipTLSVerify: false
|
的backup-s3.yaml包含访问B2云存储的关键细节。编码密钥ID和访问详细信息(如上所述从Backblaze检索)<一个rel="nofollow" href="https://help.backblaze.com/hc/en-us/articles/360047425453-Getting-Started-with-the-S3-Compatible-API">在这里一个>),以便在backup-s3中使用。yaml文件。密钥名称:my-cluster-name-backup-s3应该是唯一的,用于引用其他yaml文件:
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
|
#首先使用base64编码你的keyid和访问键:
美元
回声
“标准样品”
|
base64
--包装=0
XXXX==
美元
回声
“access-key-sample”
|
base64
--包装=0
XXXXYYZZ==
美元
猫
部署/备份-s3
.yaml
apiVersion
:
v1
种类
:
秘密
元数据
:
名字
:
我的-集群-名字-备份-s3
类型
:
不透明的
数据
:
AWS_ACCESS_KEY_ID
:
XXXX==
AWS_SECRET_ACCESS_KEY
:
XXXXYYZZ==
|
然后按照下面提到的方式部署集群,并部署backup-s3。还有Yaml。
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
|
美元
k
应用
-f
。/部署/包
.yaml
customresourcedefinition
.apiextensions
.k8s
.io/雷竞技下载官网perconaservermongodbs
.psmdb
.雷竞技下载官网percona
com
创建
customresourcedefinition
.apiextensions
.k8s
.io/雷竞技下载官网perconaservermongodbbackups
.psmdb
.雷竞技下载官网percona
com
创建
customresourcedefinition
.apiextensions
.k8s
.io/雷竞技下载官网perconaservermongodbrestores
.psmdb
.雷竞技下载官网percona
com
创建
角色
.rbac
.authorization
.k8s
.io/雷竞技下载官网-服务器-mongodb-操作符
创建
serviceaccount/雷竞技下载官网-服务器-mongodb-操作符
创建
rolebinding
.rbac
.authorization
.k8s
.io/服务-账户-雷竞技下载官网-服务器-mongodb-操作符
创建
部署
.apps/雷竞技下载官网-服务器-mongodb-操作符
创建
美元
k
应用
-f
。/部署/cr-最小的
.yaml
雷竞技下载官网perconaservermongodb
.psmdb
.雷竞技下载官网percona
com/最小的-集群
创建
美元
k
应用
-f
。/部署/备份-s3
.yaml
秘密/我的-集群-名字-备份-s3
创建
|
启动Operator并应用yaml文件后,设置如下所示:
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
|
美元
k
得到
豆荚
名字
准备好了
状态
重新启动
年龄
最小的-集群-cfg-0
2/2
运行
0
39米
最小的-集群-蒙戈-0
1/1
运行
0
70米
最小的-集群-rs0-0
2/2
运行
0
38米
雷竞技下载官网-服务器-mongodb-操作符-665年cd69f9b-44 tq5
1/1
运行
0
74米
美元
k
得到
svc
名字
类型
集群-知识产权
外部-知识产权
港口
(
年代
)
年龄
kubernetes
ClusterIP
10.96.0.1
<
没有一个
>
443/TCP
76米
最小的-集群-cfg
ClusterIP
没有一个
<
没有一个
>
27017/TCP
72米
最小的-集群-蒙戈
ClusterIP
10.100.7.70
<
没有一个
>
27017/TCP
72米
最小的-集群-rs0
ClusterIP
没有一个
<
没有一个
>
27017/TCP
72米
|
备份
部署完集群后,DB就可以随时备份了。除了定时备份,还可以创建一个backup-custom.yaml文件,以便在需要时进行备份(每次都需要提供唯一的备份名称,否则新的备份将无法工作)。我们的备份yaml文件如下所示:
|
1
2
3.
4
5
6
7
8
9
10
11
12
|
美元
猫
部署/备份/备份-自定义
.yaml
apiVersion
:
psmdb
.雷竞技下载官网percona
com/v1
种类
:
雷竞技下载官网PerconaServerMongoDBBackup
元数据
:
终结器
:
-
删除-备份
名字
:
backup1
规范
:
clusterName
:
最小的-集群
storageName
:
s3-我们-西
# compressionType: gzip
# compressionLevel: 6
|
现在加载一些数据到数据库中,然后开始备份:
|
1
2
|
美元
k
应用
-f
部署/备份/备份-自定义
.yaml
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com/backup1
配置
|
备份进度如下所示:
|
1
2
3.
4
5
6
7
8
9
|
美元
k
得到
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com
名字
集群
存储
目的地
状态
完成
年龄
backup1
最小的-集群
s3-我们-西
2022-09-08年t03
:
21
:
58 z
要求
43岁的年代
美元
k
得到
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com
名字
集群
存储
目的地
状态
完成
年龄
backup1
最小的-集群
s3-我们-西
2022-09-08年t03
:
22
:
19 z
要求
46个年代
美元
k
得到
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com
名字
集群
存储
目的地
状态
完成
年龄
backup1
最小的-集群
s3-我们-西
2022-09-08年t03
:
22
:
19 z
运行
49岁
|
在这里,如果您对备份有任何问题,您可以从备份代理侧车查看备份日志,如下所示:
|
1
|
美元
k
日志
圆荚体/最小的-集群-rs0
-c
备份-代理
|
要启动另一个备份,请编辑backup-custom。并更改备份名称,然后应用它(使用name:backup2):
|
1
2
|
美元
k
应用
-f
部署/备份/备份-自定义
.yaml
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com/backup2
配置
<
我
>
</我
>
|
raybet雷竞技竞猜在线官网监视备份过程(您可以使用- w选项,以连续观察进度)。它应该显示状态为READY:
|
1
2
3.
4
5
6
7
|
美元
k
得到
雷竞技下载官网perconaservermongodbbackup
.psmdb
.雷竞技下载官网percona
com
-w
名字
集群
存储
目的地
状态
完成
年龄
backup1
最小的-集群
s3-我们-西
2022-09-08年t03
:
22
:
19 z
准备好了
12米
14米
backup2
最小的-集群
s3-我们-西
8秒
backup2
最小的-集群
s3-我们-西
2022-09-08年t03
:
35
:
56个z
要求
21岁
backup2
最小的-集群
s3-我们-西
2022-09-08年t03
:
35
:
56个z
运行
26号,
backup2
最小的-集群
s3-我们-西
2022-09-08年t03
:
35
:
56个z
准备好了
0
41岁的年代
|
从Backblaze上的bucket中,备份文件被列出,因为它们是从备份发送的:

恢复
可以将集群从备份恢复到另一个类似的部署或相同的集群。列出备份并按如下方式还原其中一个备份。配置restore-custom.yaml具有要恢复的备份信息。如果您正在使用其他部署,那么您还可以包含backupSource部分,我在下面评论了一下,以供参考,恢复过程从中找到备份的源。在这种情况下,确保在恢复之前创建一个秘密的my-cluster-name-backup-s3以访问备份。
|
1
2
3.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
|
美元
猫
部署/备份/恢复-自定义
.yaml
apiVersion
:
psmdb
.雷竞技下载官网percona
com/v1
种类
:
雷竞技下载官网PerconaServerMongoDBRestore
元数据
:
名字
:
restore2
规范
:
clusterName
:
最小的-集群
backupName
:
backup2
# pitr:
# type:日期
#日期:YYYY-MM-DD HH:MM:SS
# backupSource:
# destination: s3:// s3 - backup - bucket - name - here /BACKUP-DESTINATION
# s3:
# credential: my-cluster-name-backup-s3
#地区:us-west-004
# bucket: S3-BACKUP-BUCKET-NAME-HERE
# endpointUrl: https://s3.us-west-004.backblazeb2.com/
# prefix: ""
# azure:
# credentialsSecret: SECRET-NAME
# prefix: prefix - name
# container: container - name
|
列出备份:
|
1
2
3.
4
5
|
美元
k
得到
psmdb-备份
名字
集群
存储
目的地
状态
完成
年龄
backup1
最小的-集群
s3-我们-西
2022-09-08年t03
:
22
:
19 z
准备好了
3 h5m
3 h6m
backup2
最小的-集群
s3-我们-西
2022-09-08年t03
:
35
:
56个z
准备好了
171米
172米
backup3
最小的-集群
s3-我们-西
2022-09-08年t04
:
16
:
39 z
准备好了
130米
131米
|
为了验证恢复过程,我将一些数据写入一个集合字段。testData在备份之后和恢复之前。因此,在恢复之后,新插入的文档不应该在那里:
|
1
2
3.
4
5
6
|
#使用mongosh从mongo容器查看数据
#列出集合vinodh.testData中的数据
美元
kubectl
运行
-我
--rm
--tty
蒙戈-客户端
--图像=蒙戈
:
5.0.7
--重新启动=从来没有
--
bash
-c
"mongosh——host=10.96.30.92——username=root——password=password——authenticationDatabase=admin——eval "
db
.getSiblingDB
(
“vinodh”
)
.testData
;
(
)
“——安静”
如果
你
不't
看到
一个
命令
提示
,
试一试
紧迫的
输入
。
[
{
_id
:
ObjectId
(
“631956 cc70e60e9ed3ecf76d”
)
,
id
:
1
}
]
圆荚体
“mongo-client”
删除
|
将文件插入其中:
|
1
2
3.
4
5
6
7
8
|
美元
kubectl
运行
-我
--rm
--tty
蒙戈-客户端
--图像=蒙戈
:
5.0.7
--重新启动=从来没有
--
bash
-c
"mongosh——host=10.96.30.92——username=root——password=password——authenticationDatabase=admin——eval "
db
.getSiblingDB
(
“vinodh”
)
.testData
.insert
(
{
id
:
2
}
)
“——安静”
如果
你
不't
看到
一个
命令
提示
,
试一试
紧迫的
输入
。
DeprecationWarning
:
集合
.insert
(
)
是
弃用
。
使用
insertOne
,
insertMany
,
或
bulkWrite
。
{
承认
:
真正的
,
insertedIds
:
{
' 0 '
:
ObjectId
(
“631980 fe07180f860bd22534”
)
}
}
圆荚体
“mongo-client”
删除
|
再次列出它来验证:
|
1
2
3.
4
5
6
7
|
美元
kubectl
运行
-我
--rm
--tty
蒙戈-客户端
--图像=蒙戈
:
5.0.7
--重新启动=从来没有
--
bash
-c
"mongosh——host=10.96.30.92——username=root——password=password——authenticationDatabase=admin——eval "
db
.getSiblingDB
(
“vinodh”
)
.testData
;
(
)
“——安静”
如果
你
不't
看到
一个
命令
提示
,
试一试
紧迫的
输入
。
[
{
_id
:
ObjectId
(
“631956 cc70e60e9ed3ecf76d”
)
,
id
:
1
}
,
{
_id
:
ObjectId
(
“631980 fe07180f860bd22534”
)
,
id
:
2
}
]
圆荚体
“mongo-client”
删除
|
执行如下命令恢复:
|
1
2
|
美元
k
应用
-f
部署/备份/恢复-自定义
.yaml
雷竞技下载官网perconaservermongodbrestore
.psmdb
.雷竞技下载官网percona
com/restore2
创建
|
现在在vinodh中再次检查数据。testData collection and verify whether the restore is done properly. The below data proves that the collection was restored from the backup as it is listing only the record from the backup:
|
1
2
3.
|
美元
kubectl
运行
-我
--rm
--tty
蒙戈-客户端
--图像=蒙戈
:
5.0.7
--重新启动=从来没有
--
bash
-c
“mongosh——host=minimal-cluster-mongos——username=root——password=password——authenticationDatabase=admin——eval”
db
.getSiblingDB
(
“vinodh”
)
.testData
;
(
)
“——安静”
如果
你
不't
看到
一个
命令
提示
,
试一试
紧迫的
输入
。
[
{
_id
:
ObjectId
(
“631956 cc70e60e9ed3ecf76d”
)
,
id
:
1
}
]
|
希望这对你有所帮助!现在,如果Backblaze符合您的要求,您可以从您的终端尝试相同的方法来检查并在您的生产中使用Backblaze。我还没有测试网络的性能。如果您使用Backblaze或类似的s3兼容存储进行备份,那么您可以在评论中与我们分享您的经验。
Perc雷竞技下载官网ona Kubernetes Operators可以自动创建、修改或删除MySQL、MongoDB或PostgreSQL环境中的Percona Distribution中的成员。
了解更多关于Percona Kub雷竞技下载官网ernetes操作符的信息一个>





