备份
Deno 的 KV 及其相关的云基元 API,如队列和定时任务,目前仍处于实验性阶段,可能会发生变化。尽管我们尽力确保数据持久性,但特别是在 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
然后,创建一个 IAM 策略,具有对存储桶的 PutObject
访问权限,将其附加到 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 和秘密访问密钥,以及存储桶所在的区域。然
后点击“保存”。
备份将立即开始。一旦数据备份完成并连续备份生效,您将看到状态变为“Active”。
配置备份到Google Cloud Storage
Google Cloud Storage (GCS) 兼容 S3 协议,也可以用作备份目标。
首先,您必须在 GCP 上创建一个存储桶:
- GCP控制台
- gcloud CLI
- 转到GCP云存储控制台
- 在顶部菜单中点击“创建”
- 输入存储桶名称,选择位置,然后点击“创建”
- 安装gcloud CLI
- 运行
gcloud storage buckets create <bucket-name> --location <location>
(用您自己的值替换<bucket-name>
和<location>
)
然后,创建一个具有对存储桶的 Storage Object Admin
访问权限的服务帐户,并为该服务帐户创建 HMAC 访问密钥:
- GCP控制台
- gcloud CLI
- 转到GCP IAM控制台
- 在左侧边栏点击“服务帐户”
- 点击“创建服务帐户”
- 为服务帐户输入名称并点击“完成”
- 复制刚刚创建的服务帐户的电子邮件。稍后您会需要它。
- 转到GCP云存储控制台
- 点击您之前创建的存储桶
- 在工具栏中点击“权限”
- 点击“授予访问权限”
- 将您刚刚复制的服务帐户的电子邮件粘贴到“新的主体”字段中
- 从“选择角色”下拉菜单中选择“Storage Object Admin”
- 点击“保存”
- 在左侧边栏点击“设置”(仍然在云存储控制台中)
- 点击“互操作性”选项卡
- 点击“为服务帐户创建密钥”
- 选择您之前创建的服务帐户
- 点击“创建密钥”
- 复制访问密钥和秘密访问密钥并将它们安全保存。稍后您会需要它们,而且将无法再次检索它们。
- 运行以下命令,用您正在创建的服务帐户的名称替换
<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 和秘密访问密钥,以及存储桶所在的区域。然后点击“保存”。
备份将立即开始。一旦数据备份完成并连续备份生效,您将看到状态变为“Active”。
使用备份
S3 备份可以与 denokv
工具一起使用。有关详细信息,请参阅文档。