备份
Deno KV 和相关的云原生 API(如队列和 cron)目前处于**实验阶段**,**可能会发生变化**。虽然我们尽力确保数据持久性,但数据丢失是可能的,尤其是在 Deno 更新期间。
使用 KV 的 Deno 程序在启动时需要使用 --unstable
标志,如下所示
deno run -A --unstable my_kv_code.ts
托管在 Deno Deploy 上的 KV 数据库可以持续备份到您自己的 S3 兼容存储桶中。这除了我们为所有存储在托管 Deno KV 数据库中的数据内部执行的复制和备份之外,以确保高可用性和数据持久性。
此备份持续进行,延迟非常小,支持时间点恢复和实时复制。为 KV 数据库启用备份可以解锁各种有趣的用例
- 检索过去任何时间点的数据一致快照
- 运行独立于 Deno Deploy 的只读数据副本
- 通过将变异管道传输到流平台和分析数据库(如 Kafka、BigQuery 和 ClickHouse)来将数据推送到您喜欢的 数据管道
配置备份到 Amazon S3
首先,您必须在 AWS 上创建一个存储桶
- AWS 控制台
- AWS CLI
- 转到 AWS S3 控制台
- 单击“创建存储桶”
- 输入存储桶名称并选择 AWS 区域,然后向下滚动并单击“下一步”
- 安装 AWS CLI
- 运行
aws s3api create-bucket --bucket <bucket-name> --region <region> --create-bucket-configuration LocationConstraint=<region>
(将<bucket-name>
和<region>
替换为您自己的值)
然后,创建一个具有对存储桶的 PutObject
访问权限的 IAM 策略,将其附加到 IAM 用户,并为该用户创建访问密钥
- AWS 控制台
- AWS CLI
- 转到 AWS IAM 控制台
- 单击左侧边栏中的“策略”
- 单击“创建策略”
- 在策略编辑器中选择“JSON”,并粘贴以下策略
将
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KVBackup",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}<bucket-name>
替换为您之前创建的存储桶的名称。 - 点击“查看策略”
- 为策略输入一个名称,然后点击“创建策略”
- 点击左侧边栏中的“用户”
- 点击“添加用户”
- 为用户输入一个名称,然后点击“下一步”
- 点击“直接附加策略”
- 搜索您之前创建的策略,并点击它旁边的复选框
- 点击“下一步”
- 点击“创建用户”
- 点击您刚刚创建的用户
- 点击“安全凭证”,然后点击“创建访问密钥”
- 选择“其他”,然后点击“下一步”
- 为访问密钥输入描述,然后点击“创建访问密钥”
- 复制访问密钥 ID 和密钥访问密钥,并将它们保存在安全的地方。您以后会需要它们,并且无法再次检索它们。
- 将以下命令复制到您的终端,并将
<bucket-name>
替换为您之前创建的存储桶的名称,然后运行它aws iam create-policy --policy-name <policy-name> --policy-document '{"Version":"2012-10-17","Statement":[{"Sid":"KVBackup","Effect":"Allow","Action":"s3:PutObject","Resource":"arn:aws:s3:::<bucket-name>/*"}]}'
- 将以下命令复制到您的终端,并将
<user-name>
替换为您要创建的用户名称,然后运行它aws iam create-user --user-name <user-name>
- 将以下命令复制到您的终端,并将
<policy-arn>
替换为您在步骤 1 中创建的策略的 ARN,并将<user-name>
替换为您在上一步骤中创建的用户的名称,然后运行它aws iam attach-user-policy --policy-arn <policy-arn> --user-name <user-name>
- 将以下命令复制到您的终端,并将
<user-name>
替换为您在步骤 2 中创建的用户的名称,然后运行它aws iam create-access-key --user-name <user-name>
- 复制访问密钥 ID 和密钥访问密钥,并将它们保存在安全的地方。您以后会需要它们,并且无法再次检索它们。
现在访问Deno Deploy 仪表板,并点击您项目中的“KV”选项卡。滚动到“备份”部分,并点击“AWS S3”。输入您之前创建的存储桶名称、访问密钥 ID 和密钥访问密钥,以及存储桶所在的区域。然后点击“保存”。
备份将立即开始。数据备份完成后,并且持续备份处于活动状态,您将看到状态更改为“活动”。
配置备份到 Google Cloud Storage
Google Cloud Storage (GCS) 与 S3 协议兼容,也可以用作备份目标。
首先,您需要在 GCP 上创建一个存储桶。
- GCP 控制台
- gcloud CLI
- 访问 GCP Cloud Storage 控制台
- 点击顶部的“创建”按钮。
- 输入存储桶名称,选择位置,然后点击“创建”。
- 安装 gcloud CLI
- 运行
gcloud storage buckets create <bucket-name> --location <location>
(将<bucket-name>
和<location>
替换为您自己的值)。
然后,创建一个具有 Storage Object Admin
权限的服务帐户,并为该服务帐户创建一个 HMAC 访问密钥。
- GCP 控制台
- gcloud CLI
- 访问 GCP IAM 控制台
- 点击左侧边栏中的“服务帐户”。
- 点击“创建服务帐户”。
- 输入服务帐户名称,然后点击“完成”。
- 复制您刚刚创建的服务帐户的电子邮件地址。您稍后会用到它。
- 访问 GCP Cloud Storage 控制台
- 点击您之前创建的存储桶。
- 点击工具栏中的“权限”。
- 点击“授予访问权限”。
- 将您之前复制的服务帐户的电子邮件地址粘贴到“新主体”字段中。
- 从“选择角色”下拉菜单中选择“Storage Object Admin”。
- 点击“保存”。
- 点击左侧边栏中的“设置”(仍在 Cloud Storage 控制台中)。
- 点击“互操作性”选项卡。
- 点击“为服务帐户创建密钥”。
- 选择您之前创建的服务帐户。
- 点击“创建密钥”。
- 复制访问密钥和秘密访问密钥,并将其保存在安全的地方。您稍后会用到它们,并且无法再次检索它们。
- 运行以下命令,将
<service-account-name>
替换为您要创建的服务帐户的名称。gcloud iam service-accounts create <service-account-name>
- 运行以下命令,将
<bucket-name>
替换为您之前创建的存储桶的名称,并将<service-account-email>
替换为您在上一步骤中创建的服务帐户的电子邮件地址。gsutil iam ch serviceAccount:<service-account-email>:objectAdmin gs://<bucket-name>
- 运行以下命令,将
<service-account-email>
替换为你在上一步创建的服务帐户的电子邮件地址gcloud storage hmac create <service-account-email>
- 复制
accessId
和secret
并将其保存在安全的地方。你以后会需要它们,并且无法再次检索它们。
现在访问Deno Deploy 仪表板,并在你的项目中点击“KV”选项卡。滚动到“备份”部分,并点击“Google Cloud Storage”。输入你之前创建的存储桶名称、访问密钥 ID 和密钥访问密钥,以及存储桶所在的区域。然后点击“保存”。
备份将立即开始。数据备份完成后,并且持续备份处于活动状态,您将看到状态更改为“活动”。
使用备份
S3 备份可与denokv
工具一起使用。有关更多详细信息,请参阅文档。