備份
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>
)
接著,建立一個 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 和秘密存取金鑰,以及儲存空間所在的區域。然後按一下「儲存」。

備份將會立即開始。資料備份完畢且連續備份已啟用後,您將會看到狀態變更為「已啟用」。
設定備份至 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>
替換為您自己的值)
然後,建立一個對儲存空間具有「儲存物件管理員」存取權的服務帳戶,並為服務帳戶建立 HMAC 存取金鑰
- GCP 主控台
- gcloud CLI
- 前往 GCP IAM 主控台
- 按一下左側邊欄中的「服務帳戶」
- 按一下「建立服務帳戶」
- 輸入服務帳戶名稱,然後按一下「完成」
- 複製您剛建立的服務帳戶的電子郵件。您稍後會需要它。
- 前往 GCP Cloud Storage 主控台
- 按一下您稍早建立的儲存空間
- 按一下工具列中的「權限」
- 按一下「授予存取權」
- 將先前複製的服務帳戶電子郵件貼到「新增負責人」欄位中
- 從「選擇角色」下拉式選單中選取「儲存物件管理員」
- 按一下「儲存」
- 按一下左側邊欄中的「設定」(仍位於 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
工具。請參閱 文件 以取得更多詳細資訊。