關於匯入及匯出資料

本頁說明如何使用 Memorystore for Redis 匯入及匯出資料。

匯入和匯出功能會使用 Redis 的原生 RDB 快照功能,將資料匯入或匯出 Memorystore for Redis 執行個體。使用原生 RDB 格式可避免鎖定,並輕鬆在 Google Cloud 或 Google Cloud內外移動資料。匯入和匯出作業會使用 Cloud Storage 值區儲存 RDB 檔案。

匯出期間,Memorystore for Redis 執行個體的行為與開放原始碼 Redis 中的 BGSAVE 指令非常相似。Memorystore for Redis 會將 RDB 檔案複製到執行個體的資料目錄,藉此匯入資料。

如需匯入及匯出 RDB 檔案的操作說明,請參閱「將資料匯入 Redis 執行個體」和「從 Redis 執行個體匯出資料」。

匯入功能行為

  • 為獲得最佳效能,建議從與 Redis 執行個體位於相同地區的 Cloud Storage 值區匯入資料。

  • 匯入作業期間,您將無法使用 Redis 執行個體。匯入作業完成後,您就可以使用執行個體。

  • 匯入成功後,執行個體中的現有資料會遭到 RDB 檔案中的資料覆寫。

  • 如果匯入作業因任何原因而失敗,執行個體會上線,但資料可能會完全清除。您可以重試匯入相同的 RDB 檔案,也可以使用其他 RDB 檔案還原資料。

  • Memorystore for Redis 執行個體可以匯入相同 Redis 版本和舊版 Redis 的 RDB 檔案,但無法匯入新版 Redis 的 RDB 檔案。

  • 您可以取消匯入作業,但請注意,取消作業會導致執行個體復原,並完全清除快取。基本級和標準級執行個體皆是如此。

  • 執行個體只能匯入舊版 Redis 的備份。執行 Redis 5.0 的執行個體可以匯入從 Redis 4.0 匯出的 RDB,但執行 Redis 4.0 的執行個體無法匯入 Redis 5.0 的 RDB。

匯出功能行為

  • 匯出作業期間,您可以讀取及寫入 Redis 執行個體的資料,但無法執行任何管理作業,例如調度資源、更新或設定執行個體。

  • 匯出期間,執行個體可能會發生延遲情形。

  • 為獲得最佳效能,請將 RDB 備份檔匯出至與 Redis 執行個體位於相同地區的 Cloud Storage 值區。

  • 匯出期間,RDB 檔案會儲存至您選擇的 Cloud Storage 值區。

  • 您隨時可以取消匯出作業。取消作業不會影響執行個體的資料或可用性。

    • 取消匯出作業會刪除寫入 Cloud Storage 值區的 RDB 檔案,並釋放 BGSAVE 程序使用的記憶體。
  • 使用 Google Cloud 控制台匯出檔案時,如果匯出檔案與現有檔案同名,系統會覆寫現有檔案,不需要額外權限。如要使用 gcloud 匯出並覆寫現有檔案,使用者帳戶必須具備 storage.objects.delete 權限。

在高寫入負載下匯出

如果在寫入負載較高的期間執行匯出作業,執行個體記憶體用量最多可能會增加 2 倍,導致匯出作業失敗。建議您在寫入作業較少的期間執行匯出作業,如要監控執行個體中儲存的 Redis 資料量,可以建立資訊主頁來監控記憶體用量,並使用 Cloud Monitoring 監控執行個體記憶體用量指標

Memorystore for Redis 匯出功能會使用 Redis 的 BGSAVE 功能,為執行個體中的資料建立快照。執行 BGSAVE 時,Redis 會分叉新的子程序來建立快照。Redis 在這個程序中會使用「寫入時複製」

這表示初始分叉會分配最少的額外記憶體,但 Redis 伺服器寫入流量變更的任何頁面都會重複。因此,在寫入量高的期間,最糟的情況是 Redis 的記憶體用量會增加一倍,導致匯出作業失敗。

在 BGSAVE 作業期間匯出

BGSAVE 作業執行期間無法匯出。標準級 Memorystore for Redis 執行個體有時會執行完整重新同步作業 (或稱「完整同步作業」),確保主要執行個體和副本保持同步。完整重新同步會使用 BGSAVE 指令,防止 Memorystore 執行匯出作業。

如要確認 BGSAVE 作業是否正在進行,請使用 Metrics Explorer 查看 redis.googleapis.com/persistence/rdb/bgsave_in_progress API 端點。

如要使用 Metrics Explorer 查看受監控資源的指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在「指標」元素中,展開「選取指標」選單,然後選取資源類型和指標類型。舉例來說,如要繪製虛擬機器的 CPU 使用率圖表,請執行下列操作:
    1. (選用) 如要減少選單選項,請在「篩選器」列中輸入指標名稱的部分內容。在本範例中,請輸入 utilization
    2. 在「Active resources」(有效資源) 選單中,選取「VM instance」(VM 執行個體)
    3. 在「使用中的指標類別」選單中,選取「執行個體」
    4. 在「有效指標」選單中,選取「CPU 使用率」,然後按一下「套用」
  3. 如要篩選顯示的時間序列,請使用篩選元素

  4. 如要合併時間序列,請使用「Aggregation」(匯總) 元素上的選單。舉例來說,如要依據 VM 的所在區域顯示 CPU 使用率,請將第一個選單設為「平均值」,第二個選單設為「區域」

    如果將「Aggregation」(彙整) 元素的第一個選單設為「Unaggregated」(未彙整) ,系統就會顯示所有時間序列。「匯總」元素的預設設定取決於您選取的指標類型。

或者,您也可以使用自己的指令列 API 工具。

匯入及匯出所需的權限

使用者必須設定足夠的 IAM 權限,才能匯入或匯出 RDB 檔案。最簡單的權限設定方式,是將 Cloud Memorystore Redis 管理員Storage 管理員 IAM 角色套用至使用者帳戶。不過,這種設定可能不適合某些使用者帳戶,因為這會授予他們建立、編輯或刪除不應存取資源的權限。如需設定限制最少的權限的操作說明,請參閱「授予有限的匯入與匯出權限」。

匯入和匯出作業的持續時間

匯入或匯出作業所需時間取決於執行個體大小,以及執行個體中資料集的大小。視大小而定,匯入和匯出作業可能需要幾分鐘到幾小時不等。

舉例來說,如果您匯入或匯出 10 GB 的執行個體,且已使用的記憶體為 8 GB,則作業可能需要 5 分鐘。如果匯入或匯出 120 GB 的執行個體,且已使用的記憶體為 100 GB,作業可能需要一小時。

停止匯入或匯出作業

如要停止匯入或匯出作業,請參閱下列頁面:

監控作業進度

匯入及匯出作業進行期間,系統不會提供完成時間預估。 如要查看作業是否正在進行,請檢查執行個體詳細資料頁面。如要查看執行個體詳細資料頁面,請在 Memorystore for Redis 執行個體清單頁面上按一下執行個體 ID。

您也可以執行下列指令,監控匯入作業的進度:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

其中:

  • [INSTANCE_ID] 是 Memorystore for Redis 執行個體的 ID。
  • [REGION] 是執行個體所在的區域。

指令會輸出 state: IMPORTINGstate: READY 做為其中一個說明欄位。

不支援的 Cloud Storage 值區

Memorystore 匯入和匯出作業不支援要求者付費 Cloud Storage 值區。

保護 Cloud Storage 值區安全

請務必為 Cloud Storage bucket 設定適當的限制,避免未經授權存取其中包含的 Redis RDB 備份。如要瞭解如何保護 Cloud Storage 值區,請參閱 Cloud Storage 存取權控管選項

確保有足夠的記憶體來完成匯出作業

為避免匯出作業導致記憶體不足,執行匯出程序時,執行個體應有 50% 的可用記憶體。視寫入負載而定,這可能不是必要條件,但如果匯出程序期間觸及許多頁面,保留 50% 的可用記憶體可確保有足夠的可用空間來容納寫入時複製的額外負擔。

如要瞭解執行個體目前的記憶體用量,請設定快訊,讓系統在記憶體用量達到可自訂門檻時通知您。此外,您也應使用 Cloud Monitoring 設定記憶體監控資訊主頁。這些指標可協助您瞭解執行個體的記憶體用量模式。瞭解記憶體用量模式後,您就能在定期匯出時正確調整執行個體大小。

匯出及匯入至具備唯讀備用資源的執行個體

對於所有 Redis 執行個體 (包括已啟用唯讀備用資源的執行個體),資料都是從主要節點匯出。

如果是已啟用唯讀備用資源的執行個體,匯出作業可能會增加主要節點的 CPU 負載和記憶體用量。

將資料匯入已啟用唯讀副本的執行個體時,主要執行個體會在匯入作業期間重新啟動,且執行個體會處於無法使用狀態,直到新資料完全載入資料庫為止。

後續步驟