Firestore (Datastore 模式) 之前支援啟用 Datastore Admin,這是個具大量刪除與備份功能的選用模組。Datastore Admin 已由更可靠的替代方案取代:
- 備份功能已由代管的匯出與匯入功能取代。
- 大量刪除功能已由 大量刪除實體 Dataflow 範本取代。
存取 Datastore 管理員
如果您先前已啟用 Datastore Admin,可以繼續前往 https://ah-builtin-python-bundle-dot-PROJECT_ID.appspot.com/_ah/datastore_admin?app_id=PROJECT_ID
存取該模組,其中 PROJECT_ID
是專案的 ID。 Google Cloud 如果您停用 Datastore Admin,則將無法重新啟用該模組。
使用 Datastore Admin 功能的注意事項
- 進行複製、刪除和備份作業時,可能不會涵蓋近期更新項目。
- 所有 Datastore Admin 作業都是在您的應用程式中執行,因此會計入您的配額。
- 強烈建議您在備份或還原期間停用寫入功能。
- 在複製/還原作業期間,系統會覆寫鍵值相同的現有實體。如果執行複製/還原操作多次,系統不會建立重複項目。複製/還原操作不會刪除額外資料。
- 如果您使用非預設佇列進行備份/還原,就只能在
queue.yaml
中指定ah-builtin-python-bundle
目標,而無法使用任何其他目標。
資料庫存取權限
根據預設,Datastore Admin 可以存取同一個專案中的 Datastore 資料庫,且不需要 Datastore 的身分與存取權管理權限。
備份資料
請按照下列步驟建立備份檔案,以供日後還原或匯出資料。
如果您尚未為專案建立儲存空間值區,請先完成建立作業。 您也可以透過存取控制清單,確認專案的 App Engine 預設服務帳戶能否存取值區。此設定可能已有預設值,但可以根據需求覆寫。
(建議) 停用 Cloud Datastore 寫入功能。
選取您要備份的實體種類。
按一下 [Backup Entities] (備份實體),顯示備份表單。
請注意,系統會提供備份名稱,其中包含一個日期戳記。
如果您每天要進行多次備份,則必須變更此值。如果已有名稱相同的備份,系統就不會備份。
請注意,備份工作會使用預設佇列;在大多數情況下,您可以使用這個預設佇列。
如果您使用非預設佇列進行備份/還原,就只能在
queue.yaml
中指定ah-builtin-python-bundle
目標,而無法使用任何其他目標。選取 [Google Cloud Storage] 做為備份儲存空間位置。
如果您選擇 Cloud Storage,系統會提示您輸入要儲存備份資料的值區名稱,格式為
[BUCKET_NAME]
。您可以指定在字尾加上目錄結構的值區名稱,例如[BUCKET_NAME]/backups/foo
。如果這些資料夾尚不存在,系統將會建立這些資料夾。按一下 [Backup Entities] (備份實體) 即可開始進行備份工作。系統隨即會顯示工作狀態頁面。
按一下 [Back to Datastore Admin] (返回 Datastore Admin) 可查看備份狀態。
備份完成後,如果您之前停用了 Cloud Datastore 寫入功能,請重新啟用寫入功能。
備份與還原的注意事項
「備份與還原」功能旨在協助您還原遭到意外刪除的資料,也能匯出資料。您可以備份所有實體,也可以只備份選定的實體種類,並在需要時從其中一個備份進行還原。
系統會將備份儲存至 Cloud Storage。
請注意,備份不包含任何索引。還原資料時,系統會使用與應用程式一起上傳的索引定義自動重建所需索引。
您也可以使用備份檔案將資料匯出至其他 Google Cloud 服務,例如 BigQuery。
還原作業不會指派新 ID 給實體。還原作業會使用備份期間就存在的 ID,並覆寫任何 ID 相同的現有實體。在還原作業期間,系統會在還原實體時保留其 ID。如果您在執行還原作業期間啟用了寫入功能,這會避免 ID 與新實體發生衝突。由於保留了備份,因此會以新增的方式加入新實體。
您可以還原備份中的所有資料,也可以只還原其中的特定實體種類。除此之外,您可以使用這項功能將某個應用程式的備份資料還原到其他應用程式,前提是您必須使用 Cloud Storage 進行備份。
取消備份
目前正在執行的備份工作會顯示在 Cloud Datastore Admin 畫面的「待處理的備份」清單中。
如要停止執行中的備份:
- 開啟 Datastore 管理員
- 在「Pending Backups」(待處理的備份) 區段選取清單中的備份,然後按一下 [Abort] (取消)。
取消備份工作時,App Engine 會嘗試刪除目前為止已儲存的備份資料。不過在某些情況下,取消備份後仍會保留部分檔案。您可以在 Google Cloud Storage 中的備份資料儲存位置找到這些檔案,並在取消作業完成後放心將其刪除。這類檔案的名稱開頭會採用以下形式:datastore_backup_[BUCKET_NAME]
。
搜尋備份的相關資訊
您可能會想瞭解備份的詳細資料,例如其中包含的實體種類、在 Google Cloud Storage 中的儲存位置,以及備份的開始時間和結束時間。如要顯示這類備份資訊:
- 開啟 Datastore 管理員
- 在「Backups」(備份) 或「Pending Backups」(待處理的備份) 清單中選取一或多個備份。
- 按一下 [Info] (資訊),顯示這些備份的資訊。
- 按一下 [Back] (返回) 即可返回 Cloud Datastore Admin 主畫面。
還原資料
如要從備份還原:
- (建議) 針對應用程式停用 Cloud Datastore 寫入功能。停用這項功能通常能避免還原作業與寫入至 Cloud Datastore 的任何新資料發生衝突。
- 開啟 Datastore 管理員
- 在可用的備份清單中,選取您要還原的備份檔案。
- 按一下 [還原]。
- 在顯示的諮詢頁面中,查看有核取方塊的實體清單。根據預設,系統會還原所有實體。找出您不要還原的每個實體,然後取消勾選旁邊的核取方塊。
- 同樣在諮詢頁面中,注意預設佇列及其預先設定的效能設定是用於還原工作。如果您需要不同的佇列效能特性,可將其變更為採用不同設定的其他佇列,並確定所選佇列不包含任何在
queue.yaml
中指定的目標,只包含ah-builtin-python-bundle
。 - 按一下 [Restore] (還原) 即可開始還原作業。系統隨即會顯示工作狀態頁面。
- 按一下「Back to Datastore Admin」(返回 Datastore Admin),即可查看還原狀態。
- 備份完成後,如果您之前停用了 Cloud Datastore 寫入功能,請重新啟用 Cloud Datastore 寫入功能。
將資料還原至其他應用程式
如果您使用 Google Cloud Storage 備份資料,就可以將備份還原至其他應用程式,不限於用於建立備份的應用程式。
如要將備份資料從來源應用程式還原至目標應用程式:
使用以下權限,在來源應用程式的儲存值區中建立身分與存取權管理 (IAM) 政策:
- 主體:[PROJECT_ID]@appspot.gserviceaccount.com
- 角色:
Storage Legacy Bucket Reader
和Storage Legacy Object Reader
其中
[PROJECT_ID]
是目標應用程式的專案 ID。在來源應用程式中製作新的備份。
(建議) 針對目標應用程式停用 Cloud Datastore 寫入功能,避免還原的資料和寫入至 Cloud Datastore 的任何新資料發生衝突。
在標示「匯入備份資訊」按鈕旁的文字方塊中,按照
/gs/[BUCKET_NAME]
格式指定包含該備份的來源應用程式值區。
您也可以提供特定備份的檔案控制代碼:如要查看備份的檔案控制代碼,請開啟來源應用程式的「管理」頁面,選取所需備份後按一下「資訊」。您應該會在「控制代碼」標籤旁邊看到檔案控制代碼。按一下 [Import Backup Information] (匯入備份資訊)。
隨即產生的選擇頁面會顯示指定值區的可用備份 (使用控制代碼指定備份除外)。選取所需備份,然後點選下列其中一個項目:- [Add to backup list] (新增至備份清單):如果您要將此備份保留在應用程式的可用備份清單中。
- [Restore from backup] (從備份還原):如果您要從此備份進行還原,但不希望此備份顯示在應用程式的可用備份清單中。
在顯示的諮詢頁面中,查看有核取方塊的實體清單。根據預設,系統會還原所有實體。找出您不要還原的每個實體,然後取消勾選旁邊的核取方塊。
同樣在諮詢頁面中,注意預設佇列及其預先設定的效能設定是用於還原工作。如果您需要不同的佇列效能特性,可將其變更為採用不同設定的其他佇列。
按一下 [Restore] (還原) 即可開始還原作業。系統隨即會顯示工作狀態頁面。
還原作業完成後,如果您先前停用了 Cloud Datastore 寫入功能,請重新啟用寫入功能。
查看資源使用量
若備份作業非常頻繁,通常會導致成本提高。執行 Cloud Datastore Admin 工作時,您其實是在執行基本的 MapReduce 工作。MapReduce 工作會導致前端執行個體時數增加,並提高 Storage 的作業數和用量。
查看資源使用量:
前往 Google Cloud 控制台的「App Engine」頁面。
使用頁面頂端的下拉式選單選取
default
服務和ah-builtin-python-bundle
版本。
啟用或停用資料庫寫入功能
在一般情況下,建議您在還原前先停用寫入功能,以避免還原作業和寫入至資料庫的任何新資料發生衝突。
停用寫入功能可避免實體遭下列角色/項目變更:
- Datastore 檢視者。
- 使用 Datastore API 的應用程式。
如要啟用或停用寫入功能:
前往「Admin」(管理) 頁面。
按一下 [啟用寫入功能] 可啟用寫入功能,按一下 [停用寫入功能] 則可停用寫入功能。按鈕文字會隨著專案狀態而變化。
查看 Datastore Admin 資源用量
執行 Datastore Admin 工作時,您其實是在執行基礎的 MapReduce 工作。MapReduce 工作會導致前端執行個體時數增加,並提高 Storage 的作業數和用量。
查看資源使用量:
前往 Google Cloud 控制台的「App Engine」頁面。
使用頁面頂端的下拉式選單選取
default
服務和ah-builtin-python-bundle
版本。
停用 Datastore Admin 存取權
執行下列指令,並將
PROJECT_ID
替換為專案 ID: Google Cloudcurl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://appengine.googleapis.com/v1/apps/PROJECT_ID/services/default/versions/ah-builtin-python-bundle