自動備份

Blaze 方案使用者可以設定 Firebase Realtime Database 自動備份,這項自助服務功能可將資料庫應用程式資料和 Security Rules,以 JSON 格式每日備份至 Cloud Storage bucket。

設定

  1. 在 Firebase 控制台中,依序前往「Databases & Storage」> 「即時資料庫」。

  2. 在「Backups」(備份) 分頁中,使用控制台內的工作流程設定自動備份。

為節省儲存空間費用,我們預設啟用 Gzip 壓縮功能,您也可以選擇在 bucket 啟用 30 天生命週期政策,自動刪除超過 30 天的備份。

您可以直接在 Firebase 控制台查看狀態和備份活動,也可以在控制台啟動手動備份。這項功能可用於擷取特定時間點的快照,或在變更程式碼前做為安全措施。

設定完成後,系統會為您建立新的 Cloud Storage bucket,並授予 Firebase WRITER 權限。請勿在這個 bucket 儲存您不希望 Firebase 存取的資料。Firebase 無法存取其他 Cloud Storage bucket 或 Google Cloud 的任何其他區域。

從備份還原

如要從備份還原 Firebase,請先將檔案從 Cloud Storage 下載到本機磁碟。只要在備份活動部分點選檔案名稱,或在 Cloud Storage bucket 介面中點選檔案名稱,即可下載檔案。如果檔案經過 Gzip 壓縮,請先解壓縮。

匯入資料的方法有兩種:

  • 方法 1:使用 Firebase 控制台。

    1. 依序前往「Databases & Storage」> 「即時資料庫」>「Data」分頁標籤。

    2. 按一下「匯入 JSON」,然後選取應用程式資料 JSON 檔案。

  • 方法 2:從指令列發出 CURL 要求。

    1. 從 Firebase 擷取密鑰,您可以在「Databases & Storage」(資料庫和儲存空間) >「Realtime Database」(即時資料庫) >「Settings」(設定) 分頁中取得。

    2. 在終端機中輸入下列指令,並將 DATABASE_NAME 和 SECRET 欄位替換成您自己的值:

      curl 'https://<DATABASE_NAME>.firebaseio.com/.json?auth=<SECRET>&print=silent' -X PUT -d @<DATABASE_NAME>.json
      

如果無法從大型資料庫還原備份,請與 Firebase 支援團隊聯絡。

排程

系統會為資料庫備份作業指定每天的特定時段,確保所有備份客戶的負載平均,且可用性最高。無論您在一天中是否手動備份,系統都會執行這項排定的備份作業。

檔案命名

轉移至 Cloud Storage bucket 的檔案會加上時間戳記 (ISO 8601 標準),並採用下列命名慣例:

  • 資料庫資料:YYYY-MM-DDTHH:MM:SSZ_<DATABASE_NAME>_data.json
  • 資料庫規則:YYYY-MM-DDTHH:MM:SSZ_<DATABASE_NAME>_rules.json

如果啟用 Gzip,系統會在檔案名稱後方附加 .gz。您可以使用 Cloud Storage 前置字串搜尋,輕鬆找到特定日期或時間的備份。

Gzip 壓縮

根據預設,我們會使用 Gzip 壓縮備份檔案,以節省儲存空間費用並縮短傳輸時間。壓縮後的檔案大小會因資料庫的資料特性而異,但一般資料庫可能會縮減至原始大小的 ⅓,進而節省儲存空間成本,並縮短備份的上傳時間。

如要解壓縮 Gzipped JSON 檔案,請使用 gunzip 二進位檔發出指令列指令,該二進位檔預設隨附於 OS-X 和大多數 Linux 發行版。

gunzip <DATABASE_NAME>.json.gz  # Will unzip to <DATABASE_NAME>.json

設定為期 30 天的儲存空間生命週期

我們提供簡單易用的設定切換鈕,可為 Cloud Storage bucket 啟用預設的 30 天物件生命週期政策。啟用後,bucket 中的檔案會在 30 天後自動刪除。這有助於減少不必要的舊備份,節省儲存空間費用,並保持 bucket 目錄整潔。如果您將其他檔案放入自動備份值區,系統也會依據相同政策刪除這些檔案。

費用

Blaze 方案的專案可啟用備份功能,無須額外付費。不過,系統會按照標準費率,向您收取 Cloud Storage bucket 中備份檔案的費用。您可以啟用 Gzip 壓縮和儲存空間 30 天生命週期,降低儲存空間成本。