本頁面說明 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 檔案,但無法從較新版本匯入 RDB 檔案。
匯入作業可以取消,但請注意,取消會導致執行個體使用已完全清除的快取進行復原。無論是基本級還是標準級執行個體,都適用於這個情況。
執行個體只能匯入舊版 Redis 的備份。執行 Redis 5.0 的執行個體可以匯入從 Redis 4.0 匯出的 RDB,但執行 Redis 4.0 的執行個體無法匯入從 Redis 5.0 匯出的 RDB。
匯出功能行為
您可以在匯出作業期間讀取及寫入 Redis 執行個體的資料,但無法執行任何管理作業,例如調度資源、更新或設定執行個體。
執行個體在匯出期間可能會發生延遲情形。
為獲得最佳效能,請將 RDB 備份匯出至與 Redis 執行個體位於相同地區的 Cloud Storage 值區。
匯出期間,RDBMS 檔案會儲存在您選擇的 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
作業執行期間,您無法匯出。標準級 Cloud Memorystore for Redis 執行個體有時會執行完整重新同步作業 (或稱「完整同步」),以便讓主要和備用資源保持同步。完整重新同步處理會使用 BGSAVE
指令,可防止 Memorystore 執行匯出作業。
如要確認 BGSAVE
作業是否正在進行,請使用 Metrics Explorer 查看 redis.googleapis.com/persistence/rdb/bgsave_in_progress
API 端點。
如要使用 Metrics Explorer 查看受控資源的指標,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在「指標」元素中,展開「Select a metric」選單,然後選取資源類型和指標類型。舉例來說,如要繪製虛擬機器的 CPU 使用率圖表,請執行下列操作:
- (選用) 如要減少選單的選項,請在「篩選列」中輸入指標名稱的部分字串。在本例中,請輸入
utilization
。 - 在「Active resources」選單中,選取「VM instance」。
- 在「Active metric categories」(使用中的指標類別) 選單中,選取「Instance」。
- 在「有效指標」選單中,選取「CPU 使用率」,然後按一下「套用」。
- (選用) 如要減少選單的選項,請在「篩選列」中輸入指標名稱的部分字串。在本例中,請輸入
如要篩選要顯示的時間序列,請使用 Filter 元素。
如要合併時間序列,請使用「Aggregation」 元素上的選單。舉例來說,如要根據區域顯示 VM 的 CPU 使用率,請將第一個選單設為「Mean」,第二個選單設為「zone」。
當「Aggregation」元素的第一個選單設為「Unaggregated」時,系統會顯示所有時間序列。Aggregation 元素的預設設定取決於您選取的指標類型。
或者,您也可以使用自己的指令列 API 工具。
匯入和匯出資料所需的權限
使用者需要設定足夠的 IAM 權限,才能匯入或匯出 RDB 檔案。最簡單的權限設定方式,就是將 Cloud Memorystore Redis 管理員和 儲存空間管理員 IAM 角色套用至使用者帳戶。不過,這類設定可能不適合部分使用者帳戶,因為這會讓他們擁有不該有的權限,可以建立、編輯或刪除資源。如需設定最小限制權限的操作說明,請參閱「授予匯入與匯出權限的限制」。
匯入和匯出作業的時間長度
匯入或匯出的時間長度取決於執行個體大小,以及執行個體中的資料集大小。視大小而定,匯入和匯出作業可能需要數分鐘至數小時才能完成。
舉例來說,如果您要匯入或匯出 10 GB 的執行個體,且該執行個體使用了 8 GB 的記憶體,則這項作業可能需要 5 分鐘。如果您匯入或匯出 120 GB 的執行個體,且該執行個體使用了 100 GB 的記憶體,則這項作業可能需要一小時。
停止匯入或匯出
如要停止匯入或匯出作業,請參閱下列頁面:
監控作業進度
匯入和匯出作業不會顯示預估完成時間。您可以查看執行個體詳細資料頁面,確認作業是否正在進行中。如要查看執行個體詳細資料頁面,請在 Memorystore for Redis 的「instances list」(執行個體清單) 頁面上按一下執行個體 ID。
您也可以執行下列指令,監控匯入作業的進度:
gcloud redis instances describe [INSTANCE_ID] --region=[REGION]
其中:
[INSTANCE_ID]
是 Memorystore for Redis 執行個體的 ID。[REGION]
是執行個體所在的地區。
這個指令會將 state: IMPORTING
或 state: READY
輸出為其中一個說明欄位。
不支援的 Cloud Storage 值區
不支援使用要求者付費的 Cloud Storage 值區匯入及匯出 Memorystore。
保護 Cloud Storage 值區
請確認 Cloud Storage 值區已設有適當的限制,以防未經授權存取其中的 Redis RDB 備份。如要瞭解如何保護 Cloud Storage 值區,請參閱 Cloud Storage 的存取權控管選項。
確保有足夠的記憶體來完成匯出作業
為避免匯出作業造成記憶體耗盡,您應在匯出程序期間,讓執行個體有 50% 的記憶體可用。這項做法不一定適用於所有情況,具體取決於寫入負載,但如果在匯出程序中涉及許多頁面,則有 50% 的記憶體可用空間可確保有足夠的空間來處理寫入時複製的額外負載。
如要瞭解執行個體目前的記憶體用量,請設定快訊,讓系統在記憶體用量達到可自訂門檻時通知您。此外,您應該使用 Cloud Monitoring 設定記憶體監控資訊主頁。這些指標可讓您瞭解執行個體的記憶體用量模式。瞭解記憶體用量模式後,您就能在定期匯出時正確設定執行個體的大小。
匯出及匯入至含有唯讀備用資源的執行個體
對於所有 Redis 執行個體 (包括已啟用唯讀備用資源的執行個體),資料都會從主要節點匯出。
如果是啟用備用資源的讀取執行個體,匯出作業可能會增加主要節點的 CPU 負載和記憶體占用空間。
將資料匯入已啟用唯讀備用資源的執行個體時,主要執行個體會在匯入作業期間重新啟動,且在將新資料完全載入資料庫前,執行個體將無法使用。
後續步驟
請按照將資料匯入 Redis 執行個體的指南操作。
請按照從 Redis 執行個體匯出資料的指南操作。