本頁面說明如何設定高可用性的執行個體。
您可以在建立執行個體時設定高可用性,也可以對現有執行個體啟用高可用性。
如要進一步瞭解高可用性,請參閱「高可用性設定總覽」。
建立高可用性的新執行個體
當您建立高可用性的執行個體時,Cloud SQL 會將該執行個體設定為地區性執行個體。
建立高可用性的執行個體:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 選取「建立執行個體」。
- 選取資料庫引擎。
- 在「Choose region and zonal availability」(選擇區域和可用區供應情形) 專區中選取「Multiple zones」(多可用區)(高可用性)。
- 展開「指定可用區」。
- 選取主要和次要可用區。在建立或編輯執行個體時使用次要區域時,須符合下列條件:
- 可用區預設為主要可用區的
Any
,次要可用區則為Any (different from primary)
。
如果同時指定主要和次要可用區,則兩者必須是不同的可用區。
- 可用區預設為主要可用區的
- 按一下「儲存」。
在執行個體更新期間,您會回到主要執行個體的執行個體頁面。
gcloud
- 建立區域執行個體:
如需可用參數的完整清單,請參閱 gcloud sql instances create 參考頁面。gcloud sql instances create REGIONAL_INSTANCE_NAME \ --availability-type=REGIONAL \ --database-version=DATABASE_VERSION \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE
- 設定 root 使用者:
gcloud sql users set-password root no-host \ --instance=REGIONAL_INSTANCE_NAME \ --password=PASSWORD
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 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection
引數設為false
。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes
,即可套用更新的 Terraform 設定:terraform apply
-
如要移除先前透過 Terraform 設定套用的資源,請執行下列指令,並在提示中輸入
yes
:terraform destroy
REST v1
如需此要求的完整參數清單,請參閱 instances:insert 頁面。建立區域執行個體。
-
使用任何要求資料���前,請���������以下項目:
- project-id:專案 ID
- instance-name:執行個體名稱
- database-version:資料庫版本的列舉字串
- region GCP 區域
- machine-type 機器類型
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
JSON 要求主體:
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "enabled": true, "pointInTimeRecoveryEnabled": true }, "availabilityType": "REGIONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
- 執行個體完成初始化時,請更新執行個體上的根密碼:
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID
- instance-id:執行個體 ID
- password:新的根使用者密碼
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=postgres'
JSON 要求主體:
{ "name": "postgres", "host": "nohost", "password": "password"}
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
REST v1beta4
如需此要求的完整參數清單,請參閱 instances:insert 頁面。建立區域執行個體。
-
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID
- instance-name:執行個體名稱
- database-version:資料庫版本的列舉字串
- region GCP 區域
- machine-type 機器類型
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
JSON 要求主體:
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "enabled": true, "pointInTimeRecoveryEnabled": true }, "availabilityType": "REGIONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
- 執行個體完成初始化時,請更新執行個體上的根密碼:
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID
- instance-id:執行個體 ID
- password:新的根使用者密碼
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=postgres'
JSON 要求主體:
{ "name": "postgres", "host": "nohost", "password": "password"}
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
如需進一步瞭解如何建立執行個體,請參閱建立執行個體。
為現有執行個體設定高可用性
您可以使用 Google Cloud 控制台、gcloud CLI 或 API,設定 Cloud SQL 執行個體以達到高可用性。
控制台
如要設定高可用性的執行個體,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 在「自動備份和高可用性」設定選項區段中,選取「高可用性 (地區性)」。另外,建議您啟用「自動備份」。
- 按一下 [儲存]。
gcloud
如要將執行個體設為地區性高可用性執行個體,請使用 gcloud sql instances patch
指令:
gcloud sql instances patch INSTANCE_NAME \ --availability-type REGIONAL
將 INSTANCE_NAME 改成您要設定高可用性的 Cloud SQL 執行個體名稱。
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": "POSTGRES_13" }
輸出內容會包含類似以下的區段:
"backupConfiguration": { "kind": "sql#backupConfiguration", "startTime": "12:00", "enabled": true, "pointInTimeRecoveryEnabled": true }
如果
enabled
或pointInTimeRecoveryEnabled
為false
,請使用instances:patch
方法來啟用這兩者。如要啟用備份,請將enabled
設為true
,並將startTime
設為備份時間開始的值。如要啟用二進位檔記錄,請將pointInTimeRecoveryEnabled
設為true
。使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您為高可用性設定的主執行個體或讀取備用資源執行個體的名稱
- START_TIME:時間 (以小時和分鐘為單位)
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
將執行個體設為區域性高可用性執行個體:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您為高可用性設定的執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"availabilityType": "REGIONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
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": "POSTGRES_13", }
輸出內容會包含類似以下的區段:
"backupConfiguration": { "kind": "sql#backupConfiguration", "startTime": "12:00", "enabled": true, "pointInTimeRecoveryEnabled": true }
如果
enabled
或pointInTimeRecoveryEnabled
為false
,請使用instances:patch
方法來啟用這兩者。如要啟用備份,請將enabled
設為true
,並將startTime
設為備份時間開始的值。如要啟用二進位檔記錄,請將pointInTimeRecoveryEnabled
設為true
。使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您為高可用性設定的主執行個體或讀取備用資源執行個體的名稱
- START_TIME:時間 (以小時和分鐘為單位)
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "pointInTimeRecoveryEnabled": true } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
將執行個體設為區域性高可用性執行個體:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您為高可用性設定的執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"availabilityType": "REGIONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
啟動容錯移轉
測試容錯移轉是選用功能,但我們建議您執行這項功能,這樣才能瞭解應用程���在發生容錯移轉時的回應方式。
如要進一步瞭解容錯移轉,請參閱容錯移轉總覽。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 按一下「Failover」。
- 在「手動觸發備援」對話方塊的文字欄位中輸入執行個體 ID,然後按一下「觸發備援」。
gcloud
啟動容錯移轉:
gcloud sql instances failover PRIMARY_INSTANCE_NAME
REST v1
- 說明主要例項,以取得
settingsVersion
欄位的值。使用任何要求資料之前,請先替換以下項目:
- 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": "POSTGRES_13" }
- 啟動容錯移轉:
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID
- instance-name:執行個體名稱
- settings-version:instanceInfo 中的 settingsVersion
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name/failover
JSON 要求主體:
{ "failoverContext": { "settingsVersion":"settings-version" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
REST v1beta4
- 說明主要例項,以取得
settingsVersion
欄位的值。使用任何要求資料之前,請先替換以下項目:
- 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": "POSTGRES_13" }
- 啟動容錯移轉:
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID
- instance-name:執行個體名稱
- settings-version:instanceInfo 中的 settingsVersion
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover
JSON 要求主體:
{ "failoverContext": { "settingsVersion":"settings-version" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
執行個體開始容錯移轉,會有幾分鐘的時間無法提供資料。
驗證執行個體的高可用性設定
如要驗證執行個體是否具備高可用性,並查看執行個體執行的區域,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 確認「Configuration」部分顯示下列高可用性設定:
- 高可用性 (單一區域)
- 「位於」會顯示執行個體目前的主要區域。
gcloud
gcloud sql instances describe INSTANCE_NAME
輸出結果表示 availabilityType
為 REGIONAL
。gceZone
和 secondaryGceZone
欄位會顯示執行個體目前的主要和次要區域。
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": "POSTGRES_13" }
輸出結果表示 availabilityType
為 REGIONAL
。gceZone
和 secondaryGceZone
欄位會顯示執行個體目前的主要和次要區域。
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": "POSTGRES_13", }
輸出結果表示 availabilityType
為 REGIONAL
。gceZone
和 secondaryGceZone
欄位會顯示執行個體目前的主要和次要區域。
變更高可用性執行個體的可用區
變更現有高可用性執行個體的一或兩個可用區,會導致執行個體重新設定時停機幾分鐘。如要查看高可用性執行個體目前執行的主要和次要區域,請參閱「驗證執行個體的高可用性設定」。
如要變更高可用性執行個體的可用區,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 在「Choose region and zonal availability」(選擇區域和可用區供應情形) 專區中展開「Specify zones」(指定可用區),然後選取新的可用區。可用區預設為主要可用區的
Any
,次要可用區的Any (different from primary)
。適用下列限制:- 您可以只指定主要可用區,也可以同時指定主要和次要可用區。
- 如果同時指定主要和次要可用區,則兩者必須是不同的可用區。
- 按一下「儲存」。
在執行個體更新期間,您會回到主要執行個體的執行個體頁面。
gcloud
變更執行個體的執行區域:
gcloud sql instances patch INSTANCE_NAME \ --zone=PRIMARY_ZONE --secondary-zone=SECONDARY_ZONE
--secondary-zone
參數為選用參數。如果省略這項資訊,Cloud SQL 會選取與主要區域不同的可用區。
適用下列限制:
- 可用區必須是有效的可用區,且與 Cloud SQL 執行個體位於相同的區域。
- 如果指定次要可用區,則該區域必須與主要可用區不同。
REST v1
變更區域執行個體的可用區:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:執行個體名稱
- PRIMARY_ZONE:主要可用區
- SECONDARY_ZONE:次要可用區
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}} }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
secondaryZone
參數為選用參數。如果省略這項資訊,Cloud SQL 會選取與主要區域不同的可用區。適用下列限制:
- 區域必須是有效的區域。
- 您選擇的所有可用區都必須與 Cloud SQL 執行個體位於相同區域。
REST v1beta4
變更區域執行個體的可用區:
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:執行個體名稱
- PRIMARY_ZONE:主要可用區
- SECONDARY_ZONE:次要可用區
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}} }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
secondaryZone
參數為選用參數。如果省略這項資訊,Cloud SQL 會選取與主要區域不同的可用區。適用下列限制:
- 區域必須是有效的區域。
- 您選擇的所有可用區都必須與 Cloud SQL 執行個體位於相同區域。
停用執行個體的高可用性
您可以使用 Google Cloud 控制台、gcloud CLI 或 API,停用 Cloud SQL 執行個體的高可用性。
控制台
如要停用執行個體的高可用性,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 開啟「自動備份」。
- 在「可用性」專區中,按一下「單一可用區」。
- 按一下 [儲存]。這項編輯需要重新啟動執行個體。
- 對話方塊顯示時,請按一下「儲存並重新啟動」。
gcloud
如要停用執行個體的高可用性,請使用 gcloud sql instances patch
指令:
gcloud sql instances patch INSTANCE_NAME \ --availability-type ZONAL
將 INSTANCE_NAME 改成要停用高可用性的 Cloud SQL 執行個體名稱。
REST v1
如要將執行個體的可用性類型變更為 ZONAL
,請使用 instances:patch
方法。這個方法會停用執行個體的高可用性。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您要停用高可用性的執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"availabilityType": "ZONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
REST v1beta4
如要將執行個體的可用性類型變更為 ZONAL
,請使用 instances:patch
方法。這個方法會停用執行個體的高可用性。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:您要停用高可用性的執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": {"availabilityType": "ZONAL" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
疑難排解
問題 | 疑難排解 |
---|---|
您無法找到手動容錯移轉的指標。 | 只有自動備援會納入指標。 |
Cloud SQL 執行個體資源 (CPU 和 RAM) 的使用率接近 100%,導致高可用性執行個體停機。 | 執行個體機器大小太小,無法負荷負載。 編輯執行個體,升級至較大的機器大小,以便取得更多 CPU 和記��體。 |
後續步驟
- 進一步瞭解高可用性設定的運作方式。
- 重新啟動執行個體以測試應用程式如何回應連線中斷。
- 進一步瞭解如何管理資料庫連線。
- 進一步瞭解 Google Cloud Observability。
- 為執行個體建立唯讀備用資源。