本文說明如何自動將自行管理的 Redis 和 Valkey 工作負載,遷移至 Memorystore for Valkey。遷移至全代管環境後,您就不必自行管理基礎架構,因此不需要手動修補 OS、設定複製作業或編寫自訂備份指令碼。這項功能可讓您充分運用內建的自動容錯移轉、安全的虛擬私有雲連線能力,以及零停機時間資源調度。
將自行管理的工作負載遷移至 Memorystore for Valkey,即可享有下列優勢,省去營運手動作業,並翻新資料庫基礎架構:
- 消除作業負擔:將手動和耗時的工作交給 Google Cloud,例如 OS 修補、基礎架構監控、備份指令碼和複製管理。因此,您可以專注於應用程式開發,而非資料庫維護。
- 實現企業級高可用性:享有全代管 99.99% 服務水準協議。Memorystore for Valkey 提供自動容錯移轉和內建備份與還原功能。這可保護應用程式免於非預期的節點故障,並確保快速災難復原。
- 幾乎無須停機即可調度資源:動態縮減或擴充執行個體,因應無法預測的流量高峰。您可以擴充至數百個節點 (最多 250 個 shard),而不必將應用程式離線。
- 強化安全性:以安全的內建虛擬私有雲連線,以及精細的身分與存取權管理 (IAM) 存取控管機制,取代複雜的手動設定網路規則。這可確保Google Cloud的嚴格安全界限能保護您的資料。
- 整合及升級執行個體:將分散、孤立且自行管理的執行個體,合併至 Memorystore for Valkey 的單一高效能部署作業。在遷移過程中,您也可以自動將過時的 Redis 或 Valkey 版本升級至最新支援版本。
- 解鎖進階即時分析和生成式 AI:轉換至最佳化環境,快取和工作階段管理延遲時間縮短至微秒。您可以立即使用 Vector Search 等進階功能,為生成式 AI 應用程式提供支援。
版本支援
本節表格列出來源 Redis 和 Valkey 自行管理執行個體,以及 Memorystore for Valkey 目標執行個體的下列資訊:
- 遷移作業支援的來源執行個體類型和版本
- 可遷移工作負載的目標 Memorystore for Valkey 執行個體版本
| 來源執行個體類型 | 來源執行個體版本 | 目標執行個體版本 |
|---|---|---|
| Redis | 3.2.x - 7.2.x | Valkey 7.2、8.0、9.0 和 9.1 |
| Valkey | 7.x、8.x 和 9.x | Valkey 7.2、8.0、9.0 和 9.1 |
事前準備
開始遷移工作負載前,請先完成本節中的必要條件。
使用 Google Cloud 控制台、gcloud CLI 和 API
如要使用 Google Cloud 控制台、Google Cloud CLI (gcloud CLI) 和 API,請執行下列操作:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
如果您先前已安裝 gcloud CLI,請執行
gcloud components update,確認您使用的是最新版本。如要存取 Memorystore for Valkey gcloud CLI 指令,您至少需要 gcloud CLI489.0.0版。 -
啟用 Memorystore for Valkey API。
Memorystore for Valkey API -
啟用 Network Connectivity API。
Network Connectivity API -
啟用 Service Consumer Management API。
Service Consumer Management API -
啟用 Compute Engine API。
Compute Engine API
指派角色和權限
如要將自行管理的 Redis 和 Valkey 工作負載遷移至 Memorystore for Valkey,請要求管理員授予您 Google Cloud 專案的 Memorystore 管理員 (roles/memorystore.admin) IAM 角色。如要進一步瞭解這個角色,請參閱「預先定義的角色」。
如要建立及查看網路連結,請要求管理員為您授予 Google Cloud 專案的 Compute 網路管理員 (roles/compute.networkAdmin) IAM 角色。如要進一步瞭解這個角色,請參閱「Compute Engine 角色」。
遷移工作負載的工作流程
如要將自行管理的 Redis 和 Valkey 工作負載遷移至 Memorystore for Valkey,請執行下列操作:
- 準備來源執行個體:設定自行管理的 Redis 或 Valkey 執行個體,允許安全連線和向外複製到 Memorystore for Valkey。
- 準備目標執行個體:決定所需的執行個體規格,例如 shard 數量和節點類型。
- 建立目標執行個體:佈建 Memorystore for Valkey 執行個體,用於接收遷移的資料。
- 設定網路連結:設定網路連結。透過這個連結,目標執行個體 (位於 Google 代管的虛擬私有雲網路) 就能啟動與來源執行個體 (位於您的虛擬私有雲網路) 的連線。因此,複製作業已建立。
- 開始遷移:啟動同步處理程序。目標執行個體會自動連線至來源執行個體,並持續以唯讀副本的形式複製資料。
- 監控遷移作業:確認遷移作業順利進行,且狀態為「HEALTHY」(健康)。
- 完成遷移:將應用程式流量切換至目標執行個體。
準備來源執行個體
您必須準備自行管理的 Redis 或 Valkey 執行個體,才能將工作負載遷移至 Memorystore for Valkey 目標執行個體。
如要允許從目標執行個體的節點連線至來源執行個體的節點,請按照下列步驟操作:
- 如果來源節點已啟用保護模式,請停用該模式。
- 如果您使用明確的
bind指令設定來源節點,請更新節點,允許來自目標節點的連入連線。目標節點會從網路連結子網路中的 IP 位址啟動連線。 - 更新可能封鎖目標節點傳入連線的所有防火牆規則。
- 如果您在來源節點上啟用了驗證和傳輸層安全標準 (TLS),請停用這些功能。
如要讓目標節點與來源節點建立複製作業,請按照下列步驟操作:
- 請勿重新命名任何會修改資料或用於複製的 Valkey 或 Redis 指令 (例如
PING、PSYNC和HSET)。 - 如果您對執行個體使用存取控管清單 (ACL),請允許
default使用者執行下列指令,讓目標執行個體建立複製作業:REPLCONFSYNCPSYNCPINGINFOCLUSTER|NODES
- 請確認來源執行個體有足夠的記憶體和 CPU 容量,可管理目標節點的額外複製負載。
準備目標執行個體
為確保複製程序順利進行,請務必適當調整目標 Memorystore for Valkey 執行個體的大小,以便處理來自來源執行個體的傳入工作負載。為此,請先確定目標執行個體的確切規格。這些規格包括與來源執行個體的相容性、叢集模式、資料庫數量、shard 數量、執行個體版本和節點類型。
如要準備目標執行個體,請遵循下列規範:
- 與來源執行個體的相容性:來源和目標執行個體必須位於相同的 Google Cloud 專案和區域。
- 叢集模式:目標執行個體的叢集模式必須與來源執行個體的叢集模式相符。如果來源執行個體已停用叢集模式,目標執行個體也必須停用叢集模式。否則目標執行個體必須啟用叢集模式。
- 資料庫數量:如果目標執行個體已停用叢集模式,則執行個體上的邏輯資料庫數量必須等於或大於來源執行個體上的資料庫數量。
- Shard 數量:如果目標執行個體已啟用叢集模式,則執行個體上的 shard 數量必須與來源執行個體上的 shard 數量相符。不過,來源和目標執行個體的副本數量可以不同。
- 執行個體版本:目標執行個體的版本必須與來源執行個體的版本相容。詳情請參閱「版本支援」。
- 維護版本:目標執行個體的維護版本必須是
MEMORYSTORE_20260313_01_00以上版本。詳情請參閱「關於維護作業」。 - 節點類型:目標執行個體的節點類型必須夠大,才能處理從來源節點接收的資料。如要進一步瞭解可為目標執行個體選取的節點類型,以及各節點類型對應的鍵空間容量,請參閱「節點類型規格」。
建立目標執行個體
如果沒有符合條件的目標執行個體,無法接收 Memorystore for Valkey 從來源執行個體遷移的資料,就必須建立執行個體。
如要建立這個執行個體,請使用 Google Cloud 控制台、gcloud CLI 或 REST API。如要進一步瞭解如何建立執行個體,請參閱「建立執行個體」。
設定網路連結
如要將來源執行個體的工作負載遷移至目標執行個體,目標節點必須連線至來源節點。如要啟用這項連線,您必須使用網路連結。目標節點會從來源執行個體虛擬私有雲網路中,連結至網路連結的子網路,啟動連線。
您可以使用符合下列規定的網路連結:
- 必須與目標執行個體位於相同的 Google Cloud 專案和區域。
- 其子網路必須與來源執行個體位於同一個虛擬私有雲網路。
- 來源執行個體的子網路必須有足夠的 IP CIDR 範圍,至少支援
N+1個可用 IP 位址 (其中N是目標執行個體中的節點數量)。舉例來說,如果目標執行個體有三個 shard 和一個副本,則會有六個節點:三個節點用於主要執行個體,三個節點用於副本。因此,您至少需要七個 IP 位址。 - 子網路範圍不得與
10.0.0.0/23重疊,因為 Memorystore for Valkey 會保留這個範圍。
如果網路連結不符合這些規定,或您沒有網路連結,則必須建立一個。詳情請參閱「建立網路連結」。
開始遷移
啟動遷移作業後,目標執行個體會與來源執行個體建立複製關係。目標執行個體會自動複製應用程式寫入來源執行個體的任何資料。目標執行個體會成為來源執行個體的唯讀副本。
如要開始遷移,請使用 Google Cloud 控制台、gcloud CLI 或 REST API。
控制台
在 Google Cloud 控制台中,前往「Memorystore for Valkey」頁面。
按一下目標執行個體的 ID。
在「執行個體一覽」頁面,點選「開始遷移」。
在「Migrate Self Managed Redis and Valkey Instances」(遷移自行管理的 Redis 和 Valkey 執行個體) 視窗中,執行下列操作:
在「Prepare」(準備) 分頁中,詳閱來源執行個體的必要條件和網路連結指南。然後按一下「Continue」(繼續)。
在「Connect」(連結) 分頁中,執行下列操作:
- 輸入來源執行個體的 IP 位址和通訊埠。您在「準備來源執行個體」中已記下這項資訊。
- 選取要用於遷移資料的網路連結。
- 按一下「繼續」。
在「Review」(審查) 分頁中,查看與遷移程序相關聯的資訊。這類資訊包括目標執行個體的 ID、來源執行個體的 IP 位址和通訊埠,以及網路連結的名稱。查看這項資訊後,按一下「開始遷移」。
在「Instance at a glance」(執行個體一覽) 頁面中,確認顯示「Migrating」(遷移中) 狀態。
如果目標節點無法連線至來源節點,或來源執行個體無法將資料複製到目標執行個體,遷移作業就會失敗。
發生這種情況時,Memorystore for Valkey 會將目標執行個體復原至遷移作業開始前的狀態。目標執行個體的狀態會還原為「Ready」(就緒),且執行個體會再次具備讀取和寫入功能。
解決導致遷移失敗的問題後,即可重新啟動遷移作業。
gcloud
使用 gcloud memorystore instances start-migration 指令,如下所示:
gcloud memorystore instances start-migration INSTANCE_ID \ --project=PROJECT_ID \ --location=REGION_ID \ --source-ip=SOURCE_IP_ADDRESS \ --source-port=SOURCE_PORT \ --network-attachment=projects/PROJECT_ID/locations/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
請依指示取代下列項目:
- INSTANCE_ID:目標執行個體的 ID。
- PROJECT_ID:包含這個執行個體的Google Cloud 專案 ID 或專案編號。
- REGION_ID:執行個體所在區域的 ID。
- SOURCE_IP_ADDRESS:來源執行個體的 IP 位址。您在「準備來源執行個體」中已記下這個 IP 位址。
- SOURCE_PORT:來源執行個體的通訊埠編號。您在「準備來源執行個體」中已記下這個通訊埠。
- NETWORK_ATTACHMENT_ID:網路連結的 ID。
如要確認遷移作業已順利啟動,請使用 gcloud memorystore instances describe 指令,如下所示:
gcloud memorystore instances describe INSTANCE_ID \ --project=PROJECT_ID \ --location=REGION_ID
確認 state 參數旁顯示 MIGRATING 狀態。
如果目標節點無法連線至來源節點,或來源執行個體無法將資料複製到目標執行個體,遷移作業就會失敗。
發生這種情況時,Memorystore for Valkey 會將目標執行個體復原至遷移作業開始前的狀態。目標執行個體的狀態會還原為 ACTIVE,且執行個體會再次具備讀取和寫入功能。
解決導致遷移失敗的問題後,即可重新啟動遷移作業。
REST
如要開始遷移,請使用下列 REST API 指令。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:目標執行個體所在 Google Cloud 專案的 ID 或專案編號。
- REGION_ID:這個執行個體所在區域的 ID。
- INSTANCE_ID:執行個體的 ID。
- SOURCE_IP_ADDRESS:來源執行個體的 IP 位址。您在「準備來源執行個體」中已記下這個 IP 位址。
- SOURCE_PORT:來源執行個體的通訊埠編號。您在「準備來源執行個體」中記下了這個通訊埠。
- NETWORK_ATTACHMENT_ID:網路連結的 ID。
HTTP 方法和網址:
POST https://memorystore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID:startMigration
JSON 要求主體:
{
"selfManagedSource": {
"ipAddress": "SOURCE_IP_ADDRESS",
"port": SOURCE_PORT,
"networkAttachment": "projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.memorystore.v1.OperationMetadata",
"createTime": "2026-10-26T20:00:00.000000000Z",
"target": "projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID",
"verb": "startMigration",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
監控遷移作業
為確保遷移作業順利進行,請同時監控來源和目標執行個體。
監控來源執行個體
在來源執行個體上,確認來源節點的用戶端輸出緩衝區用量維持在低點。如要查看緩衝區用量,請執行下列其中一項操作:
- 使用現有的監控資訊主頁
- 使用 Redis 或 Valkey 用戶端連線至來源執行個體,然後執行
INFO CLIENTS指令,檢查輸出緩衝區指標
如果用量持續偏低,表示延遲時間極短,且資料已成功從來源執行個體同步至目標執行個體。
監控目標執行個體
您可以監控從來源執行個體遷移至 Memorystore for Valkey 的健康狀態。如要這麼做,請查看目標執行個體的遷移狀態(/instance/migration_status) 指標,確認執行個體的目前狀態為「HEALTHY」。這個狀態表示在遷移過程中,來源和目標執行個體 shard 之間的複製連結處於啟用狀態,且正常運作。
如要使用Google Cloud 控制台查看執行個體的遷移狀態指標,請按照下列步驟操作:
前往 Google Cloud 控制台的「Metrics Explorer」頁面。
從「Metric」(指標) 選單中,選取「Migration status」(遷移狀態) 指標。如要執行這項操作, 請依序選取「Memorystore Instance」(Memorystore 執行個體) > 「Instance」(執行個體) >「Migration status」(遷移狀態), 然後按一下「Apply」(套用)。
在「Filter」(篩選器) 欄位中,新增下列篩選器:
instance_id = (equals) INSTANCE_ID。將 INSTANCE_ID 替換為目標執行個體的 ID。
在「Results」(結果) 部分,查看執行個體的目前狀態。如果顯示「HEALTHY」狀態,表示執行個體運作正常,您可以完成遷移。
如果未顯示「HEALTHY」狀態,則可使用目標執行個體主要節點的「Migration status」指標。監控這些節點,即可判斷是否有任何特定節點不健康。
如要使用執行個體節點的「Migration status」(遷移狀態) 指標,請按照下列步驟操作:
從「Metric」(指標) 選單中,選取「Migration status」(遷移狀態) 指標。如要執行這項操作,請依序選取「Memorystore Instance Node」>「Instance」>「Migration status」,然後點選「Apply」。
在「Filter」(篩選器) 欄位中,新增下列篩選器:
role = (equals) primary。在「Results」(結果) 區段中,確認所有主要節點的目前狀態為「HEALTHY」(健康狀態良好)。如果狀態為 HEALTHY,表示節點運作正常,可以完成遷移。
完成遷移
如要完成遷移作業,請使用 Google Cloud 控制台、gcloud CLI 或 REST API。
控制台
在 Google Cloud 控制台中,前往「Memorystore for Valkey」頁面。
按一下目標執行個體的 ID。
在「執行個體一覽」頁面,點選「完成遷移」。
在「Finish migration」(完成遷移) 對話方塊中,執行下列操作:
如要確保目標執行個體會複製來源執行個體的所有資料,請選取「Standard」(標準)。
在「Instance ID」(執行個體 ID) 文字欄位中,輸入目標執行個體的 ID。
按一下「完成遷移」。
在「Instance at a glance」(執行個體一覽) 頁面中,確認顯示「Migrated」(已遷移) 狀態。
gcloud
使用 gcloud memorystore instances finish-migration 指令,如下所示:
gcloud memorystore instances finish-migration INSTANCE_ID \ --project=PROJECT_ID \ --location=REGION_ID
請依指示取代下列項目:
- INSTANCE_ID:目標執行個體的 ID
- PROJECT_ID:包含這個執行個體的Google Cloud 專案 ID 或專案編號
- REGION_ID:執行個體所在區域的 ID
如要確認遷移作業是否順利完成,請使用 gcloud memorystore instances describe 指令,如下所示:
gcloud memorystore instances describe INSTANCE_ID \ --project=PROJECT_ID \ --location=REGION_ID
確認 state 參數旁顯示 MIGRATED 狀態。
REST
如要完成遷移,請使用下列 REST API 指令。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含目標執行個體的 Google Cloud 專案 ID。
- REGION_ID:這個執行個體所在區域的 ID。
- INSTANCE_ID:執行個體的 ID。
FORCE_BOOLEAN:選用。這項參數會決定 Memorystore for Valkey 是否強制立即完成遷移。
- 如果將這個參數設為
true,Memorystore for Valkey 會立即完成遷移,以便您將應用程式流量切換至目標執行個體。不過,Memorystore for Valkey 可能無法將來源執行個體中的所有資料,複製到目標執行個體。 - 如果將這個參數設為
false,Memorystore for Valkey 會將來源執行個體中的所有資料,複製到目標執行個體,直到遷移完成為止。
- 如果將這個參數設為
HTTP 方法和網址:
POST https://memorystore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID:finishMigration
JSON 要求主體:
{
"force": FORCE_BOOLEAN
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.memorystore.v1.OperationMetadata",
"createTime": "2026-10-26T20:00:00.000000000Z",
"target": "projects/PROJECT_ID/locations/REGION_ID/instances/INSTANCE_ID",
"verb": "finishMigration",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}