啟用及停用高可用性

本頁說明如何設定高可用性的執行個體。

您可以在建立執行個體時設定高可用性,也可以對現有執行個體啟用高可用性。

如要進一步瞭解高可用性,請參閱高可用性設定總覽

建立高可用性的新執行個體

當您建立高可用性的執行個體時,Cloud SQL 會將該執行個體設定為區域執行個體。

建立高可用性的執行個體:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 選取「建立執行個體」
  3. 選取資料庫引擎。
  4. 在「選擇區域和可用區供應情形」部分,選取「多個可用區 (可用性高)」
  5. 展開「指定可用區」
  6. 選取主要和次要可用區。在建立或編輯執行個體時使用次要區域,須符合下列條件:
    • 主要可用區預設為 Any,次要可用區則為 Any (different from primary)
    • 如果同時指定主要和次要可用區,這兩個可用區不得相同。

  7. 按一下「儲存」

    系統會將您帶回主要執行個體的執行個體頁面,並更新執行個體。

gcloud

  1. 建立地區性執行個體:
    gcloud sql instances create REGIONAL_INSTANCE_NAME \
    --availability-type=REGIONAL \
    --database-version=SQLSERVER_2017_STANDARD \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE
  2. 設定 root 使用者:
    gcloud sql users set-password root no-host \
    --instance=REGIONAL_INSTANCE_NAME \
    --password=PASSWORD
如需可用參數的完整清單,請參閱 gcloud sql instances create 參考頁面。

Terraform

如要建立高可用性執行個體,請使用 Terraform 資源

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-ha"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
  }
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    您只需要為每項專案執行一次這個指令,且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是 .tf,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。

    將範例程式碼複製到新建立的 main.tf

    視需要從 GitHub 複製程式碼。如果 Terraform 代码片段是端對端解決方案的一部分,建議您使用這個方法。

  3. 查看並修改範例參數,套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,套用更新的 Terraform 設定:
    terraform apply
  1. 執行下列指令,並在提示中輸入 yes,即可移除先前透過 Terraform 設定套用的資源:

    terraform destroy

REST v1

如需此要求的完整參數清單,請參閱執行個體:插入頁面。

建立區域執行個體。

  1. 使用任何要求資料之前,請先修改下列項目的值:

    • 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
          },
          "availabilityType": "REGIONAL"
       }
    }
    

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

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

  2. 執行個體完成初始化後,請更新執行個體的根密碼:

    使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • password:新的根使用者密碼

    HTTP 方法和網址:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'

    JSON 要求主體:

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

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

    您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

REST v1beta4

如需此要求的完整參數清單,請參閱執行個體:插入頁面。

建立區域執行個體。

  1. 使用任何要求資料之前,請先修改下列項目的值:

    • 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
          },
          "availabilityType": "REGIONAL"
       }
    }
    

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

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

  2. 執行個體完成初始化後,請更新執行個體的根密碼:

    使用任何要求資料之前,請先修改下列項目的值:

    • 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=sqlserver'

    JSON 要求主體:

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

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

    您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

如需進一步瞭解如何建立執行個體,請參閱建立執行個體

為現有執行個體設定高可用性

您可以使用 Google Cloud 控制台、gcloud CLI 或 API,為 Cloud SQL 執行個體設定高可用性。

控制台

如要設定高可用性的執行個體,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下 [編輯]
  4. 在「自動備份和高可用性」設定選項區段中,選取「高可用性 (地區性)」。此外,建議您啟用「自動備份」
  5. 按一下 [儲存]

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 方法和網址:

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 方法和網址:

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

JSON 要求主體:

{
  "settings": {"availabilityType": "REGIONAL" }
}

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

您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

開始容錯移轉

測試容錯移轉是選用功能,但我們建議您執行這項功能,這樣才能瞭解應用程式在發生容錯移轉時的回應方式。

如要進一步瞭解容錯移轉,請參閱「容錯移轉總覽」。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下「Failover」
  4. 在「Manually trigger a failover」(手動觸發容錯移轉) 對話方塊的文字欄位中,輸入執行個體 ID,然後按一下「Trigger Failover」(觸發容錯移轉)

gcloud

啟動容錯移轉:

gcloud sql instances failover PRIMARY_INSTANCE_NAME

REST v1

  1. 描述主要執行個體,以取得 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": "SQLSERVER_2019_STANDARD"
    }
    
  2. 啟動容錯移轉: <0x0

    使用任何要求資料之前,請先修改下列項目的值:

    • 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

  1. 描述主要執行個體,以取得 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": "SQLSERVER_2019_STANDARD"
    }
    
  2. 啟動容錯移轉: <0x0

    使用任何要求資料之前,請先修改下列項目的值:

    • 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 回覆:

執行個體開始容錯移轉,會有幾分鐘的時間無法提供資料。

驗證執行個體的高可用性設定

如要確認執行個體是否具備高可用性,並查看執行個體執行的區域,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 確認「Configuration」(設定) 區段顯示下列高可用性設定:
    • 高可用性 (單一區域)
    • 「位於」會顯示執行個體目前的主要區域。

gcloud

gcloud sql instances describe INSTANCE_NAME

輸出內容會顯示 availabilityTypeREGIONALgceZonesecondaryGceZone 欄位會顯示執行個體目前的主要和次要區域。

REST v1

使用任何要求資料之前,請先修改下列項目的值:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

輸出內容會顯示 availabilityTypeREGIONALgceZonesecondaryGceZone 欄位會顯示執行個體目前的主要和次要區域。

REST v1beta4

使用任何要求資料之前,請先修改下列項目的值:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2017_STANDARD",
}

輸出內容會顯示 availabilityTypeREGIONALgceZonesecondaryGceZone 欄位會顯示執行個體目前的主要和次要區域。

變更高可用性執行個體的可用區

變更現有高可用性執行個體的一或兩個可用區時,執行個體會重新設定,因此會停機幾分鐘。如要查看高可用性執行個體目前執行的主要和次要區域,請參閱驗證執行個體的高可用性設定

如要變更高可用性執行個體的可用區,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下 [編輯]
  4. 在「選擇區域和可用區供應情形」部分,展開「指定可用區」並選取新可用區。主要可用區預設為 Any,次要可用區則為 Any (different from primary)。相關限制如下:
    • 您可以只指定主要可用區,也可以同時指定主要和次要可用區。
    • 如果同時指定主要和次要可用區,這兩個可用區不得相同。
  5. 按一下「儲存」

    系統會將您帶回主要執行個體的執行個體頁面,並更新執行個體。

gcloud

變更執行個體執行的區域:

gcloud sql instances patch INSTANCE_NAME \
  --zone=PRIMARY_ZONE --secondary-zone=SECONDARY_ZONE

--secondary-zone 參數為選用參數。如果省略,Cloud SQL 會選取與主要區域不同的可用區。

相關限制如下:

  • 可用區必須是有效的可用區,且與 Cloud SQL 執行個體位於相同區域。
  • 如果指定次要可用區,則必須與主要可用區不同。

REST v1

  1. 變更地區執行個體的可用區:

    使用任何要求資料之前,請先修改下列項目的值:

    • 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

  1. 變更地區執行個體的可用區:

    使用任何要求資料之前,請先修改下列項目的值:

    • 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 執行個體的高可用性。

如果停用執行個體的高可用性,一旦發生可用區中斷事件,您就必須手動復原執行個體。詳情請參閱「獨立執行個體的復原選項」。

控制台

如要停用執行個體的高可用性,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下 [編輯]
  4. 開啟「自動備份」
  5. 在「可用性」部分,按一下「單一可用區」
  6. 按一下 [儲存]。這項編輯需要重新啟動執行個體後才會生效。
  7. 對話方塊出現時,請按一下「儲存並重新啟動」

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 和記憶體。

後續步驟