本頁面說明如何將 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 執行個體的網路架構,請按照下列步驟操作:
檢查單一 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.update
或 instance.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 method
或 instance.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 執行個體的網路架構將進行升級。該怎麼辦?
- 嘗試升級執行個體時,收到「outside the reserved IP address range」(超出保留 IP 位址範圍) 錯誤訊息。該怎麼辦?
升級對 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
)。
然後重新嘗試網路架構升級。
後續步驟
- 進一步瞭解 Private Service Connect
- 進一步瞭解 Assured Workloads
- 進一步瞭解如何設定 Cloud SQL 的私人服務存取權
- 進一步瞭解 AlloyDB for PostgreSQL 的資料庫移轉服務