我正在尝试让自动备份为我的arangodb集群部署工作。我正在尝试遵循documentation,但我想我已经搞砸了。
下面是我的数据库配置yaml:
apiVersion: "database.arangodb.com/v1alpha"
kind: "ArangoDeployment"
metadata:
name: "arangodb-cluster"
spec:
mode: Cluster
agents:
count: 3
args:
- --log.level=debug
dbservers:
count: 3
coordinators:
count: 3
---
apiVersion: "backup.arangodb.com/v1alpha"
kind: "ArangoBackup"
metadata:
name: "arangodb-backup"
namespace: default
spec:
policyName: "arangodb-backup-policy"
deployment:
name: "arangodb-backup-deployment"
upload:
repositoryURL: "https://s3.filebase.com/buffer"
credentialsSecretName: "backup-secret"
---
apiVersion: "backup.arangodb.com/v1alpha"
kind: "ArangoBackupPolicy"
metadata:
name: "arangodb-backup-policy"
spec:
schedule: "*/2 * * * *"
template:
upload:
repositoryURL: "https://s3.filebase.com/myBucket"
credentialsSecretName: "backup-secret"
---
apiVersion: v1
kind: Secret
metadata:
name: backup-secret
data:
token: mybase64EnodedJSONToken
type: Opaque
理想情况下,我会在我的桶中找到一些数据,但它是空的。我认为它可能是:
1.桶的大小太小(但这似乎不太现实,因为这是一个只有一个文档和4个集合的测试部署,所以不应该太大)
1.我正在使用的服务根本不受支持2.1我正在使用的服务配置错误
1.我误解了文档中的一些内容
我解码的json令牌如下所示(我用rclones cli生成了它):
{
"Filebase": {
"access_key_id": "myID",
"acl": "private",
"endpoint": "https://s3.filebase.com",
"env_auth": "false",
"provider": "Other",
"secret_access_key": "myAccessKey",
"type": "s3"
}
}我的编码代码看起来(有点)像这样(只是把它放在这里,以防我用错误的方式编码json标记):
我的天啊!
它的长度为:301字节
我尝试过:我试图得到一些更多的内部正在发生的事情,但我缺乏经验,这样做propperly,我也试图添加一些东西,从文档,但无济于事。
作为最后的通知,在filebase.com Jmeter 板上,桶被设置为私有,我在那里使用的是自由层,cronjob计时器上的2 min只是为了测试。
编辑:看起来定制备份吊舱是DB的一个专业功能,如果一个人想要有备份,他需要为此建立自己的吊舱。
1条答案
按热度按时间q43xntqr1#
这就是我如何解决它(脚本的第一部分归功于官方的arangodb github)。
脚本在做什么
我们正在创建一个每14天运行一次的cronjob,然后启动一个pod,它将使用
arangodump
工具转储(在本例中)整个数据库。通过传递数据,如数据库URL,密码,用户名,并将其保存在一个卷下
temp/dump
.然后,我们创建另一个使用minio cli工具的pod,该工具允许与任何主要对象存储提供程序进行交互。
我们首先为gcloud设置一个带有访问密钥和秘密的mc别名,你可以用任何其他s3兼容的提供者url替换它。(在本例中为 * quute *,请将其替换为您自己的存储桶名称!)。
$()
可用于执行shell命令并使用返回值,只为那些不知道的人。