使用寫入端點連線至執行個體

總覽

本頁說明如何使用寫入端點,透過私人服務存取權 (PSA),從虛擬私有雲 (VPC) 網路中的用戶端連線至 Cloud SQL 執行個體。

寫入端點是全域網域名稱服務 (DNS) 名稱,會自動解析為目前主要執行個體的 IP 位址。如果發生備用資源容錯移轉或切換作業,這個寫入端點會自動將連入連線重新導向至新的主要執行個體。您可以在 SQL 連線字串中使用寫入端點連線至 Cloud SQL 執行個體,而不必使用 IP 位址。使用寫入端點,您就不必在執行副本容錯移轉或切換作業時變更應用程式連線,以進行區域中斷復原或災害復原演練。

每個符合資格的 Cloud SQL 執行個體都有單一內建寫入端點,其名稱、建立和更新作業皆由 Cloud SQL 管理。以下範例說明其格式:

  primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
  

寫入端點一律以 .global.sql-psa.goog. 後置字元結尾。 您無法修改 Cloud SQL 管理的寫入端點名稱或格式。

您可以使用寫入端點,對主要執行個體執行所有寫入作業,包括插入、更新、刪除和 DDL 變更。您也可以使用寫入端點進行讀取作業,例如查詢。當您執行副本容錯移轉或切換作業,將副本執行個體升級為新的主要執行個體時,Cloud SQL 會自動變更寫入端點指向的私人 IP 位址。

產生寫入端點

如果您建立新的 Cloud SQL 執行個體,只要符合下列必要條件,Cloud SQL 就會自動建立寫入端點:

  • 您必須在 Cloud SQL 執行個體所在的 Google Cloud 專案中啟用下列 API:

    如果未在專案中啟用 Cloud DNS API,就無法建立對等互連 DNS 區域,導致 DNS 名稱無法使用。

    對等互連 DNS 可用區建立完成後,請勿以任何方式修改。任何修改 (包括刪除) 都會導致 DNS 無法用於資料庫連線。

  • Cloud SQL 執行個體必須是 Cloud SQL Enterprise Plus 版本
  • Cloud SQL 執行個體必須設定為使用私人 IP,並啟用私人服務存取權 (PSA)
  • 這項功能需要使用新網路架構的執行個體。在大多數情況下,新執行個體會採用新架構。如要確認這一點,請檢查執行個體的網路架構

將現有的 Cloud SQL Enterprise 版本執行個體升級為 Cloud SQL Enterprise Plus 版本執行個體時,如果符合先前列出的必要條件,Cloud SQL 會自動產生寫入端點。如果現有執行個體採用舊版網路架構,您必須先將執行個體升級為新版網路架構,才能取得寫入端點。

如果您已有 Cloud SQL Enterprise Plus 版本執行個體,但沒有寫入端點,且希望 Cloud SQL 自動產生寫入端點,請建立已啟用進階災難復原功能的副本。

查看寫入端點

gcloud

如要找出寫入端點,請使用下列 gcloud CLI 指令:

      gcloud sql instances describe INSTANCE_NAME \
      | grep writeEndpoint
    

請將下列項目改為對應的值:

:Cloud SQL 執行個體的名稱。INSTANCE_NAME

寫入端點一律會以 .global.sql-psa.goog. 字尾結尾,類似以下範例:

  primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
  

如果沒有看到符合資格的執行個體寫入端點,請參閱「疑難排解」。

使用寫入端點連線至 Cloud SQL 執行個體

sqlcmd

如要使用寫入端點將 sqlcmd 用戶端連線至 Cloud SQL 執行個體,請執行下列指令:

    sqlcmd -S WRITE_ENDPOINT -U USERNAME -d DATABASE_NAME -P
  

請將下列項目改為對應的值:

  • DATABASE_NAME:資料庫名稱。例如:main
  • USERNAME:使用者名稱。例如:sqlserver
  • WRITE_ENDPOINT:DNS 名稱或寫入端點。這個英數字元值一律會以 .global.sql-psa.goog. 字尾結尾。例如:primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.

限制

  • 建立 Cloud SQL Enterprise 版執行個體時,無法使用寫入端點。
  • 寫入端點不適用於僅限公開 IP 的執行個體,或僅限 Private Service Connect 的執行個體。
  • 寫入端點無法搭配 Cloud SQL 驗證 Proxy 或語言連接器使用。

疑難排解

以下各節說明寫入端點的架構,並解決常見的疑難排解問題。

寫入端點的架構

建立符合資格的執行個體時,系統會預設產生寫入端點。

如要建立寫入端點,Cloud SQL 會執行下列設定:

下圖說明這個程序的運作方式:

圖表:顯示虛擬私有雲對等互連如何支援專案之間的 DNS 區域對等互連。
圖 1. 這張圖表顯示虛擬私有雲對等互連如何支援服務供應商網路與客戶網路之間的 DNS 區域對等互連。

DNS 解析問題

如果 DNS 解析無法正常運作,請檢查下列各個項目:

  1. 確認符合所有必要條件
  2. 請確認預期會解析的用戶端位於與 Cloud SQL 執行個體連結的相同網路。如要檢查,請使用 gcloud compute instances list 指令:
    gcloud compute instances list \
       --format="table( name, zone.basename(), networkInterfaces[].network )" \
       --project=PROJECT_NAME

    PROJECT_NAME 替換為 DNS 消費者網路所在的專案名稱。

  3. 確認對等互連區域是否存在。做法是使用以下 gcloud dns managed-zones list 指令:
    gcloud dns managed-zones list \
        --project=PROJECT_NAME

    PROJECT_NAME 替換為 DNS 消費者網路所在的專案名稱。

新例項沒有寫入端點

如果新建立的執行個體不含寫入端點,請檢查下列各個項目:

  1. 請確認已完成所有必要條件
  2. 確認沒有 DNS 名稱為「sql-psa.goog.」的剩餘對等互連 DNS 區域。

    如果與 DNS 區域相關聯的網路,與對等互連 DNS 區域的對等互連專案 ID 沒有 VPC 對等互連,則對等互連 DNS 區域就是遺留的 DNS 區域。

    如果還有以 sql-psa.goog. 字尾結尾的對等互連 DNS 區域,請刪除。

    如要檢查是否有剩餘的對等互連 DNS 區域,請使用 gcloud dns managed-zones list 指令:

    gcloud dns managed-zones list \
       --project=PROJECT_NAME

    PROJECT_NAME 替換為 DNS 消費者網路所在的專案名稱。

    如果 DNS 區域的後置字串為 sql-psa.goog.,請仔細檢查確認對等互連 DNS 區域是遺留的 DNS 區域,然後刪除該區域。

    如要刪除 DNS 區域,請使用 gcloud dns managed-zones delete 指令:

    gcloud dns managed-zones delete ZONE_NAME

    ZONE_NAME 替換為與寫入端點相關聯的 DNS 區域名稱。值為英數字元,格式如下: cloud-sql-psa-dns-1234567890

後續步驟