將執行個體升級至新的網路架構


本頁面說明如何將 Cloud SQL 執行個體從舊的網路架構升級至新的網路架構。

這個 Cloud SQL 網路架構升級頁面僅適用於部分 Cloud SQL 執行個體。如果 Cloud SQL 執行個體使用的是 2021 年 8 月前建立的虛擬私有雲 (VPC) 網路專案,您就需要為執行個體升級 Cloud SQL 網路架構。

總覽

下表列出新網路架構相較於舊網路架構的優點:

功能 舊網路架構 新的網路架構
使用資料庫移轉服務,從 Cloud SQL 遷移至 AlloyDB for PostgreSQL 需要為遷移作業設定私人 IP 位址 不需要額外的網路設定。

例如,Cloud SQL 到 AlloyDB for PostgreSQL 的遷移作業
使用私人 IP 連線至 Cloud SQL 執行個體,以便存取 Cloud Build 或 Vertex AI 等私人服務 由於網路對等互連性不具傳遞性,因此不支援 支援
符合 Assured Workloads 規範的執行個體 不支援 支援
代管型 Microsoft AD 不支援 支援
Private Service Connect 不支援 支援
每個專案的預設 Cloud SQL 執行個體配額 100 1000

規劃升級作業

升級 Cloud SQL 執行個體的網路架構前,請根據下列升級限制規劃升級作業:

  • 如果您升級網路架構,執行個體的停機時間平均為 4 分鐘。

  • 如果資料遷移作業正在進行,您就無法在資料遷移期間將來源執行個體升級至新架構。

  • 如果您從外部來源連線至執行個體,請確認所有對等連線都已更新,以便匯出自訂路徑。

  • 如果您使用服務範圍,請確認已納入共用 VPC 主機專案。如果未納入這個專案,遷移作業就會失敗。

  • 您無法在含有超過 300 個 Cloud SQL 執行個體的網路上,升級執行個體的網路架構。

  • 如果您的網路在相同區域中含有兩個以上的執行個體,且這些執行個體使用私人 IP 位址,則該執行個體會有下列限制:

    • Cloud SQL 可能會使用您為私人服務存取權分配的 IP 位址範圍,額外使用 /24 範圍 (或範圍)。Cloud SQL 會使用額外的 /24 範圍 (或範圍),在新版網路架構中託管執行個體。
    • 如果您為私人服務存取權分配的 IP 位址範圍中,可用的 /24 子網路範圍有限,Cloud SQL 可能會為符合資格的執行個體使用 Google 擁有的 /24 範圍。您無法將已升級的執行個體降級為外部執行個體的備用資源。

    這些限制是暫時性的,Cloud SQL 會在後續維護事件期間移除。

  • 舊版高可用性 (HA) 執行個體 (含有容錯移轉備用資源) 無法升級。

  • 升級網路架構後,您無法為已升級的執行個體建立舊版 HA 容錯備援複本。

  • 如果您要升級私人 IP 執行個體,則可能會為與 servicenetworking 網路的對等連線啟用 import-custom-routes 標記。如果您在升級後變更這項設定,執行個體可能會失去連線。

規劃升級網路專案中的所有 Cloud SQL 執行個體

Cloud SQL 執行個體可以位於與虛擬私人雲端網路相同的專案,也可以位於不同專案。代管虛擬私有雲網路的專案稱為「網路專案」

網路專案可在雙層堆疊模式下運作,也就是說,它可以同時代管 Cloud SQL 執行個體,並同時使用舊版和新版網路架構。當專案中至少有一個執行個體使用舊架構時,就會發生這種情況。因此,Cloud SQL 無法將專案升級至新架構。

如要查詢專案中所有執行個體的網路架構,您可以使用 gcloud CLI 或 API。

雙層堆疊專案的注意事項

使用雙堆疊專案時,請注意下列事項:

  • 隱含升級執行個體:如果您修改執行個體的私人網路,或是在雙層架構專案中啟用私人 IP 位址,Cloud SQL 可能會隱含升級執行個體至新網路架構。
  • 不降級架構:網路變更不會降級執行個體的網路架構。
  • 拒絕要求:如果網路變更需要降級才能完成,Cloud SQL 會拒絕要求。

為避免發生衝突並確保網路升級順利進行,建議您將專案中的所有執行個體升級為新架構。

升級 Cloud SQL 網路架構

如要升級 Cloud SQL 執行個體的網路架構,請按照下列步驟操作:

  1. 檢查 單一 Cloud SQL 執行個體多個 Cloud SQL 執行個體的網路架構。
  2. 升級 Cloud SQL 執行個體的網路架構

檢查單一 Cloud SQL 執行個體的網路架構

如要檢查單一執行個體目前的網路架構,請使用 gcloud sql instances describe 指令或 instances.get 方法。

gcloud

如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」一文。

如要檢查單一執行個體的網路架構,請執行下列指令:

   gcloud sql instances describe INSTANCE_NAME
   

如果執行個體使用舊的網路架構,回應會類似以下內容:

   name: INSTANCE_NAME
   project: PROJECT_ID
   ...
   sqlNetworkArchitecture: OLD_NETWORK_ARCHITECTURE
  

如果執行個體使用新的網路架構,回應會類似以下內容:

   name: INSTANCE_NAME
   project: PROJECT_ID
   ...
   sqlNetworkArchitecture: NEW_NETWORK_ARCHITECTURE
  

sqlNetworkArchitecture 參數會指出執行個體是使用舊版網路架構 (OLD_NETWORK_ARCHITECTURE) 還是新版網路架構 (NEW_NETWORK_ARCHITECTURE)。

REST v1

如要檢查執行個體的網路架構,請使用 Cloud SQL Admin API 的 instances.get 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體名稱。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型定義如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

REST v1beta4

如要檢查執行個體的網路架構,請使用 Cloud SQL Admin API 的 instances.get 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體名稱。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型定義如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

檢查多個 Cloud SQL 執行個體的網路架構

如要檢查專案中多個執行個體的網路架構,請使用 gcloud sql instances list 指令或 instance.list 方法。

gcloud

如要檢查專案中多個執行個體的網路架構,請執行下列指令:

gcloud sql instances list --show-sql-network-architecture

輸出內容如下所示。

NAME        DATABASE_VERSION LOCATION   ...     SQL_NETWORK_ARCHITECTURE
instance_1  POSTGRES_13      asia-northeast1-b  OLD_NETWORK_ARCHITECTURE
instance_2  MYSQL_5_7        europe-west1-d     NEW_NETWORK_ARCHITECTURE
...

REST v1

如要檢查專案中多個執行個體的網路架構,請使用 instance.list 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

LIST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

REST v1beta4

如要檢查專案中多個執行個體的網路架構,請使用 instance.list 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型定義如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

LIST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance
  "name": INSTANCE_NAME
  "project": PROJECT_ID
  "sqlNetworkArchitecture": enum (SqlNetworkArchitecture)
  ...
}

升級單一 Cloud SQL 執行個體的網路架構

如要為單一執行個體升級網路架構,請使用 gcloud sql instances patch 指令、instance.update 方法或 instance.patch 方法。

gcloud

如要升級執行個體的網路架構,請執行下列指令:

gcloud sql instances patch INSTANCE_NAME --upgrade-sql-network-architecture

升級作業需要幾分鐘才能完成。

在升級期間,系統會啟動長時間執行的作業,並傳回作業符記:

operation_id

REST v1

如要升級執行個體的網路架構,請使用 Cloud SQL Admin API 的 instance.updateinstance.patch 方法。

升級 Cloud SQL 網路架構時,請勿在要求中允許對執行個體進行額外更新。要求主體包含 DatabaseInstance 物件的例項,並將 sqlNetworkArchitecture 設為 NEW_NETWORK_ARCHITECTURE

在升級期間,系統會啟動長時間執行的作業,並傳回作業符記:

operation_id

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體名稱。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型定義如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance,
  "targetLink": string,
  "status": enum (SqlOperationStatus),
  "name": string,
  "insertTime": string,
  "startTime": string,
  "endTime": string
  ...
}

如果執行個體升級失敗,請重試升級作業。

REST v1beta4

如要升級執行個體的網路架構,請使用 Cloud SQL Admin API 的 instance.update methodinstance.patch method

升級 Cloud SQL 網路架構時,請勿在要求中允許對執行個體進行額外更新。要求主體包含 DatabaseInstance 物件的例項,並將 sqlNetworkArchitecture 設為 NEW_NETWORK_ARCHITECTURE

在升級期間,系統會啟動長時間執行的作業,並傳回下列作業符記:

operation_id

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體名稱。
  • NETWORK_ARCHITECTURE_TYPE:網路架構類型定義如下:
    • OLD_NETWORK_ARCHITECTURE:執行個體使用舊版網路架構。
    • NEW_NETWORK_ARCHITECTURE:執行個體使用新的網路架構。

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

JSON 要求主體:

{
  "sqlNetworkArchitecture": "NETWORK_ARCHITECTURE_TYPE"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": sql#instance,
  "targetLink": string,
  "status": enum (SqlOperationStatus),
  "name": string,
  "insertTime": string,
  "startTime": string,
  "endTime": string
  ...
}

如果執行個體升級作業因任何原因失敗,您可以重試升級作業。

常見問題

本節將針對升級 Cloud SQL 網路架構的常見問題提供解答。

升級對 Cloud SQL 執行個體有何影響?

升級網路架構時,Cloud SQL 執行個體會處於維護狀態。在這個狀態下,執行個體平均會有四分鐘的停機時間。升級完成前,您無法對執行個體進行任何其他變更。專案或網路中的其他執行個體不會受到升級作業的影響。

升級後,所有功能是否都正常運作?

在新架構中,Cloud SQL 執行個體的所有功能都會與舊架構相同。將執行個體升級為新版網路架構後,如果您想切換該執行個體的網路,請確認目的地網路中的所有執行個體也已升級為新版網路架構。

哪些執行個體使用舊的網路架構?

凡是在 2021 年 8 月後建立的新專案,都會自動使用新的網路架構。現有專案可能包含兩年以上的 Cloud SQL 執行個體,且仍使用舊版網路架構。因此,您必須先升級現有專案中的所有執行個體,該專案中的任何新執行個體才能開始使用新的網路架構。

所有新的 Cloud SQL 執行個體是否都建立在新網路架構上?

根據預設,在 2021 年 8 月後建立的專案中建立的新 Cloud SQL 執行個體會使用新的網路架構。

如果您想在 2021 年 8 月前建立的專案中建立執行個體,並使用新的網路架構,則必須將該專案中所有現有的執行個體更新為新的網路架構。如果您使用共用虛擬私有雲,則必須更新共用虛擬私有雲中參與專案的所有執行個體。

更新專案中所有現有執行個體後,請等待數小時,再建立專案中的任何執行個體。您在專案中建立的新執行個體會使用新的網路架構。

如果最近刪除的執行個體採用舊版網路架構,您必須等待四天,才能使用新版網路架構建立新的執行個體。這段延遲時間可讓系統還原已刪除的執行個體。

是否可以使用單一指令更新專案中的所有例項?

否,升級為新網路架構的依據是每個執行個體。

如果我升級主要執行個體,副本會自動升級嗎?

否,升級至新網路架構的作業是針對個別執行個體進行。系統會將每個複本視為個別的執行個體,因此必須個別升級。也就是說,如果主要執行個體升級,而備援機制使用舊的網路架構,備援機制不會受到影響。反之亦然。如果您升級副本,主機不會受到影響。

我收到通知,指出 Cloud SQL 執行個體的網路架構將進行升級。我需要做些什麼?

您無須採取任何行動。

在某些情況下,當私人網路發生自動升級時,系統會暫時拒絕要求。解決方法是按照「升級單一 Cloud SQL 執行個體的網路架構」一文的程序,自行升級執行個體的網路架構。

嘗試升級執行個體時,收到「outside the reserved IP address range」錯誤訊息。我需要做些什麼?

如要在具有私人 IP 的 VPC 網路中使用 Cloud SQL 執行個體,請在為 VPC 網路設定私人服務存取權時,分配 IP 位址範圍。

舉例來說,如果 IP 分配的位址範圍變更或刪除,您可能會遇到類似以下的錯誤:

Network architecture upgrade not allowed for private-ip instance PROJECT_ID:INSTANCE_NAME
whose IP address range 10.0.0.0/24 is outside the reserved IP address range for
private services access. Re-allocate the IP address range for private services access and retry.

在這個範例中,原始的 IP 位址範圍名稱為 google-managed-services-VPC_NETWORK_NAME,原始的 IP 位址範圍則為 10.0.0.0/16。然後,您可以建立私人 IP 位址為 10.0.0.1 的執行個體。如果 google-managed-services-VPC_NETWORK_NAME 的 IP 位址範圍遭到刪除,或是更新為參照 10.1.0.0/16 的範圍,則該範圍不會涵蓋執行個體的私人 IP 位址 10.0.0.1。之後,當您嘗試升級執行個體的網路架構時,會遇到 outside the reserved IP address range 錯誤。

如要解決這個問題,請按照「為 Cloud SQL 設定私人服務存取權」一文中的步驟操作。將包含執行個體 IP 位址的 IP 位址範圍重新分配至私人服務存取權範圍。至少可以分配錯誤訊息中回報的 IP 位址範圍 (在前述範例中為 10.0.0.0/24)。

然後重新嘗試網路架構升級。

後續步驟