本頁說明如何匯入及匯出 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 bucket 匯入資料。
匯入作業期間,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 bucket。
匯出期間,RDB 檔案會儲存至您選擇的 Cloud Storage 值區。
您隨時可以取消匯出作業。取消作業不會影響執行個體的資料或可用性。
- 取消匯出作業會刪除寫入 Cloud Storage 值區的 RDB 檔案,並釋放
BGSAVE程序使用的記憶體。
- 取消匯出作業會刪除寫入 Cloud Storage 值區的 RDB 檔案,並釋放
使用 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 查看受監控資源的指標,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 leaderboard「指標探索器」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在「指標」元素中,展開「選取指標」選單,然後選取資源類型和指標類型。舉例來說,如要繪製虛擬機的 CPU 使用率圖表,請執行下列步驟:
- (選用) 如要減少選單選項,請在「篩選列」中輸入部分指標名稱。在本範例中,請輸入
utilization。 - 在「Active resources」(有效資源) 選單中,選取「VM instance」(VM 執行個體)。
- 在「使用中的指標類別」選單中,選取「執行個體」。
- 在「Active metrics」(有效指標) 選單中,選取「CPU utilization」(CPU 使用率),然後點選「Apply」(套用)。
- (選用) 如要減少選單選項,請在「篩選列」中輸入部分指標名稱。在本範例中,請輸入
如要篩選顯示的時間序列,請使用「Filter」(篩選器) 元素。
如要合併時間序列,請使用「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: IMPORTING 或 state: READY 做為其中一個說明欄位。
不支援的 Cloud Storage bucket
Memorystore 匯入和匯出作業不支援要求者付費 Cloud Storage 值區。
保護 Cloud Storage bucket 安全
請確保 Cloud Storage bucket 設有適當限制,避免未經授權存取其中包含的 Redis RDB 備份。如要瞭解如何保護 Cloud Storage bucket,請參閱 Cloud Storage 存取權控管選項。
確保記憶體足夠,可完成匯出作業
為避免匯出作業導致記憶體不足,匯出期間執行個體應有 50% 的可用記憶體。視寫入負載而定,這可能並非必要條件,但如果匯出期間觸及許多頁面,50% 的可用記憶體可確保有足夠的可用空間來容納寫入時複製的額外負擔。
如要瞭解執行個體目前的記憶體用量,請設定快訊,讓系統在記憶體用量達到可自訂門檻時通知您。此外,您也應使用 Cloud Monitoring 設定記憶體監控資訊主頁。這些指標可協助您瞭解執行個體的記憶體用量模式。瞭解記憶體用量模式後,您就能在定期匯出時正確調整執行個體大小。
匯出及匯入至具備唯讀備用資源的執行個體
對於所有 Redis 執行個體 (包括已啟用唯讀備用資源的執行個體),資料都是從主要節點匯出。
如果是已啟用唯讀備用資源的執行個體,匯出作業可能會增加主要節點的 CPU 負載和記憶體用量。
將資料匯入已啟用唯讀副本的執行個體時,主要執行個體會在匯入作業期間重新啟動,且執行個體會無法使用,直到新資料完全載入資料庫為止。
後續步驟
請按照將資料匯入 Redis 執行個體指南操作。
請按照「從 Redis 執行個體匯出資料」指南操作。