本頁面說明自助式維護功能,可讓您在排定的維護作業正常流程之外,接受執行個體的維護更新。
總覽
Cloud SQL 會定期透過新的維護版本發布軟體改善項目,例如已知安全漏洞的修補程式。Cloud SQL 每隔幾個月就會排定維護更新,確保您使用的是最新維護版本,但您可能需要使用自助式維護功能,原因如下:
- 您需要在下次排定的維護事件之前進行更新。
- 您略過最近一次排定的維護事件後,想趕上最新的維護版本。
您不必手動更新至最新版本。您可以讓 Cloud SQL 在下次排定的維護事件期間,自動更新維護版本。
管理主要執行個體所有唯讀副本的維護作業
如果對具有唯讀副本的主要執行個體執行自助式維護作業,Cloud SQL 會自動將維護更新套用至所有唯讀副本。如果唯讀副本執行個體超過三個,系統會將執行個體分組並平行更新。最後,系統會將維護更新套用至主要執行個體。
如有需要,您仍可對單一唯讀副本執行自助維護作業。不過,為確保所有唯讀副本執行個體和主要執行個體都採用相同的維護版本,建議您同時對主要執行個體的所有唯讀副本執行自助維護作業。
如要更新單一唯讀副本執行個體,請在執行自助維護時指定該執行個體。
自動輪換伺服器憑證
如果執行個體使用共用 CA (serverCaMode 設為 GOOGLE_MANAGED_CAS_CA),伺服器憑證的效期為 1 年。對執行個體執行自助式維護作業時,您可以啟用伺服器憑證自動輪替功能,讓 Cloud SQL 在維護更新期間自動輪替伺服器憑證,最久可提前 180 天。
事前準備
執行自助式維護作業前,請先確認目前的維護版本。接著,您可以決定要更新至哪個目標維護版本,並將執行個體更新至該版本。如果您使用唯讀副本,請將主要執行個體的所有唯讀副本更新至該版本。
如要查看執行個體目前的維護版本,請按照下列程序操作:
gcloud
執行下列 gcloud 指令前,請先進行下列替換:
- INSTANCE_ID:要查詢的執行個體
gcloud sql instances describe INSTANCE_ID
執行個體上安裝的維護版本會顯示在 maintenanceVersion 屬性旁。
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Google Cloud 專案的 ID 或專案編號,該專案包含執行個體
- INSTANCE_NAME:要設定高可用性的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0"
}
在回應的 DatabaseInstance 區段中,找出 maintenanceVersion 項目。
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Google Cloud 專案的 ID 或專案編號,該專案包含執行個體
- INSTANCE_NAME:要設定高可用性的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0"
}
在回應的 DatabaseInstance 區段中,找出 maintenanceVersion 項目。
決定目標維護版本
請使用下列方法,查看可選為目標的維護版本。您無法更新至比目前維護版本更早的版本。
gcloud
執行下列 gcloud 指令前,請先進行下列替換:
- INSTANCE_ID:要查詢的執行個體
gcloud sql instances describe INSTANCE_ID
可用的維護版本會顯示在 availableMaintenanceVersions 屬性旁。
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Google Cloud 專案的 ID 或專案編號,該專案包含執行個體
- INSTANCE_NAME:要設定高可用性的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0"
}
在回應的 DatabaseInstance 區段中,找出 availableMaintenanceVersions 項目。
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: Google Cloud 專案的 ID 或專案編號,該專案包含執行個體
- INSTANCE_NAME:要設定高可用性的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "MYSQL_8_0"
}
在回應的 DatabaseInstance 區段中,找出 availableMaintenanceVersions 項目。
將主要執行個體的所有唯讀副本更新至目標維護版本
如要對主要執行個體的所有唯讀副本執行個體執行維護更新,請按照下列程序操作。
gcloud
使用下列 gcloud 指令前,請先替換下列項目:
- PRIMARY_INSTANCE_ID:主要執行個體的 ID
- MAINTENANCE_VERSION:要套用的 Cloud SQL 維護版本
gcloud sql instances patch PRIMARY_INSTANCE_ID \ --maintenance-version=MAINTENANCE_VERSION
在確認提示中,輸入 Y 即可繼續,或輸入 N 取消。
如果選取 Y,更新程序會先將指定的維護版本套用至所有唯讀副本,再更新主要執行個體。如果唯讀副本執行個體已更新至目標維護版本,系統會略過該執行個體。
如果選取 N,則不會更新任何執行個體。
唯讀副本和主要執行個體更新完成後,系統會顯示類似下方的訊息:
Patching Cloud SQL instance....done. Patching Cloud SQL instance....done. Patching Cloud SQL instance....done. Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
Terraform
如要建立執行個體,請使用 Terraform 資源。
套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
這項指令在每個專案中只需執行一次,且可在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為「根模組」)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須有
.tf副檔名,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在按照教學課程操作,可以複製每個章節或步驟中的程式碼範例。
將程式碼範例複製到新建立的
main.tf。您也可以從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 請查看並修改範例參數,以便套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請視需要加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 要建立或更新的資源符合預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection引數設為false。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes,套用更新後的 Terraform 設定:terraform apply
-
執行下列指令,並在提示中輸入
yes,移除先前使用 Terraform 設定套用的資源:terraform destroy
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- PROJECT_ID:主要執行個體的執行個體 ID
- MAINTENANCE_VERSION:要套用的 Cloud SQL 軟體維護版本
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"maintenanceVersion": "MAINTENANCE_VERSION"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "08:00",
"endTime": "08:01",
"operationType": UPDATE,
"name": "OPERATION_ID",
"targetId": "PRIMARY_INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_ID:主要執行個體的執行個體 ID
- MAINTENANCE_VERSION:要套用的 Cloud SQL 軟體維護版本
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"maintenanceVersion": "MAINTENANCE_VERSION"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "08:00",
"endTime": "08:01",
"operationType": UPDATE,
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
將單一執行個體更新至目標維護版本
如要對單一執行個體執行維護更新,請按照下列程序操作。如有需要,您可以使用這項程序更新單一唯讀副本執行個體。
gcloud
使用下列 gcloud 指令前,請先替換下列項目:
- INSTANCE_ID:執行個體的 ID。這個執行個體可以是唯讀副本執行個體。
- MAINTENANCE_VERSION:要套用的 Cloud SQL 維護版本
gcloud sql instances patch INSTANCE_ID \ --maintenance-version=MAINTENANCE_VERSION
如果指定唯讀副本,系統會顯示確認提示。輸入 Y 繼續,或輸入 N 取消。
- 如果選取
Y,更新程序只會將指定的維護版本套用至指定的唯讀副本。 - 如果選取
N,則不會更新任何執行個體。
執行個體更新完成後,系統會顯示類似以下的訊息:
Patching Cloud SQL instance....done. Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
Terraform
如要建立執行個體,請使用 Terraform 資源。
套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
這項指令在每個專案中只需執行一次,且可在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為「根模組」)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須有
.tf副檔名,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在按照教學課程操作,可以複製每個章節或步驟中的程式碼範例。
將程式碼範例複製到新建立的
main.tf。您也可以從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 請查看並修改範例參數,以便套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請視需要加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 要建立或更新的資源符合預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection引數設為false。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes,套用更新後的 Terraform 設定:terraform apply
-
執行下列指令,並在提示中輸入
yes,移除先前使用 Terraform 設定套用的資源:terraform destroy
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- PROJECT_ID:執行個體 ID,可以是唯讀副本執行個體
- MAINTENANCE_VERSION:要套用的 Cloud SQL 軟體維護版本
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"maintenanceVersion": "MAINTENANCE_VERSION"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "08:00",
"endTime": "08:01",
"operationType": UPDATE,
"name": "OPERATION_ID",
"targetId": "PRIMARY_INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_ID:執行個體 ID,可以是唯讀副本執行個體
- MAINTENANCE_VERSION:要套用的 Cloud SQL 軟體維護版本
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"maintenanceVersion": "MAINTENANCE_VERSION"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "08:00",
"endTime": "08:01",
"operationType": UPDATE,
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
疑難排解
| 問題 | 疑難排解 |
|---|---|
| 無法對已停止的執行個體套用維護更新。 | 如要解決這個問題,請先啟動執行個體,再執行自助式維護更新。 |
| 資料庫主要版本不同,因此無法更新維護作業。 | 您無法使用自助式維護功能,升級執行個體的資料庫主要版本。 如要升級執行個體的主要版本,請採用下列其中一項程序: |
| 資料庫子版本不同,因此無法更新維護作業。 | 您無法使用自助式維護功能,升級執行個體的資料庫子版本。 如要升級執行個體的子版本,請按照「升級資料庫子版本」中的步驟操作。 |
後續步驟
- 查看執行個體作業記錄。
- 請參閱維護作業常見問題。
- 進一步瞭解 Cloud SQL 中的複製功能。