建立執行個體

本頁面說明如何建立 SQL Server 適用的 Cloud SQL 執行個體。

如要進一步瞭解所有執行個體設定,請參閱「執行個體設定」。

新建立的執行個體會有 sqlserver 資料庫。

建立 SQL Server 適用的 Cloud SQL 執行個體後,您可以建立或匯入資料庫,將資料庫新增至執行個體。

單一專案中可擁有的執行個體數量上限,取決於這些執行個體的網路架構:

  • 新版 SQL 網路架構:每項專案最多可有 1,000 個執行個體。
  • 舊版 SQL 網路架構:每個專案最多可有 100 個執行個體。
  • 同時使用兩種架構:限制會介於 100 到 1,000 之間,具體取決於執行個體在這兩種架構中的分布情形。

提交客服案件,要求提高配額。唯讀副本會計為執行個體。

選擇 Cloud SQL Enterprise Plus 版本或 Cloud SQL Enterprise 版本

建立 SQL Server 適用的 Cloud SQL 執行個體時,您需要根據 Cloud SQL 版本,從多個不同的機器家族中選擇機器設定。詳情請參閱「選擇機器系列」。

多執行緒並行

在 SQL Server 適用的 Cloud SQL 中,多執行緒並行 (SMT) 功能會在一個實體核心,以個別獨立執行緒的形式執行兩個虛擬 CPU (vCPU)。SMT 預設為啟用,但您可以停用這項功能,降低授權費用。

停用 SMT 可能會影響執行個體效能。如要瞭解停用 SMT 對執行個體效能的影響,建議您對執行個體執行負載測試。

事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the gcloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the gcloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 確認您的使用者帳戶具備下列角色:

    前往「IAM」頁面

    進一步瞭解角色和權限。

建立 SQL Server 執行個體

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選「建立執行個體」。
  3. 選取「New instance」(新增執行個體)。
  4. 在「Create an instance」(建立執行個體) 頁面的「Choose your database engine」(選擇資料庫引擎) 面板中,按一下「Choose SQL Server」(選擇 SQL Server)。
  5. 在「Create a SQL Server instance」(建立 SQL Server 執行個體) 頁面的「Choose a Cloud SQL edition」(選擇 Cloud SQL 版本) 部分,選取執行個體的 Cloud SQL 版本:Enterprise 或 Enterprise Plus。

    如要進一步瞭解 Cloud SQL 版本,請參閱「Cloud SQL 版本簡介」。

  6. 選取執行個體的版本預設設定。如要查看可用的預設設定,請按一下「Edition preset」(版本預設設定) 選單。
  7. 在「Instance info」(執行個體資訊) 部分,選取執行個體的資料庫版本。如要查看可用版本,請按一下「Database version」(資料庫版本) 選單。
  8. 在「Instance info」(執行個體資訊) 窗格的「Instance ID」(執行個體 ID) 欄位中,輸入執行個體的 ID。

    執行個體名稱不需包含專案 ID。系統會在適當情況下自動執行這項操作 (例如在記錄檔中)。

  9. 在「Password」(密碼) 欄位中輸入使用者的密碼。
  10. 如要查看密碼明文,請按一下「顯示密碼」圖示。

    您可以手動輸入密碼,也可以點選「Generate」(產生),讓 Cloud SQL 自動建立密碼。

  11. 在「Choose region and zonal availability」(選擇區域和可用區供應情形) 專區中,選取執行個體的區域和可用區。可用區域可能因 SQL Server 適用的 Cloud SQL 版本而異。詳情請參閱「關於執行個體設定」。

    將執行個體放在與存取資源相同的區域。選定後即無法變更。在多數情況下,您不需要指定可用區。

    如要將執行個體設為高可用性,可以同時選取主要和次要可用區。

    在建立執行個體期間使用次要可用區時,須符合下列條件:

    • 主要可用區預設為 Any,次要可用區預設為 Any (different from primary)。
    • 如果同時指定主要和次要可用區,兩者必須不同。
  12. 在「Customize your instance」(自訂執行個體) 專區中,更新執行個體的設定。按一下「顯示設定選項」,即可顯示設定群組。然後展開要查看及自訂設定的群組。 右側會顯示所選選項的摘要。 您可以視需要自訂這些執行個體設定。在未進行任何自訂的情況下,系統會指派預設值。

    下表列出執行個體設定,方便您快速參考。如要進一步瞭解各項設定,請參閱執行個體設定頁面。

    設定 附註
    機器類型
    機型 選取「輕量」、「標準」(最常見) 或「高記憶體」。每種機型都是根據執行個體的 CPU (核心) 數量和記憶體容量分類。
    核心 執行個體的 vCPU 數量。瞭解詳情。
    記憶體 執行個體的記憶體容量 (以 GB 為單位)。瞭解詳情。
    自訂 如要使用專用核心機型,請選取「Custom」(自訂) 按鈕,建立自訂設定的執行個體,而非選取預先定義的設定。如果選取這個選項,則必須為執行個體選取核心數量和記憶體容量。瞭解詳情。
    資料快取
    啟用資料快取 根據預設,SQL Server 適用的 Cloud SQL Enterprise Plus 版本執行個體會自動選取啟用資料快取的選項。如果不想啟用資料快取,請取消勾選「Enable data cache」(啟用資料快取) 核取方塊。如要進一步瞭解資料快取,請參閱「資料快取」。
    儲存空間
    儲存空間類型 決定執行個體要使用 SSD 或 HDD 儲存空間。瞭解詳情。
    儲存空間容量 為執行個體佈建的儲存空間量。 瞭解詳情。
    啟用自動增加儲存空間 決定 Cloud SQL 是否要在可用空間不足時,自動為執行個體提供更多儲存空間。瞭解詳情。
    加密
    Google 代管的加密金鑰預設選項。
    客戶自行管理的加密金鑰 (CMEK)選取即可透過 Google Cloud Key Management Service 使用金鑰。瞭解詳情。
    連線
    私人 IP 為執行個體新增私人 IP 位址。為執行個體選擇私人服務連線、Private Service Connect 連線,或兩者皆選。您選取的項目會為執行個體提供私人網路連線。無論是哪種情況,都必須進行額外設定。

    如要選取及設定私人服務連線,請按照下列步驟操作:

    1. 勾選「私人服務連線 (PSA)」核取方塊。
    2. 從「VPC network」(虛擬私有雲網路) 下拉式選單中,選取執行個體連線的網路名稱。
    3. 在「Allocated IP range」(分配的 IP 範圍) 下拉式選單中,選取「Automatic」(自動) 或特定命名的 IP 範圍。

    如要進一步瞭解如何設定私人服務存取權,請參閱「設定私人服務存取權」。執行個體可以同時擁有公開和私人 IP 位址。

    如要選取及設定 Private Service Connect,請按照下列步驟操作:

    1. 勾選「Private Service Connect (PSC)」核取方塊。
    2. 按一下「新增端點」。
    3. 在「Endpoint setup」(端點設定) 部分,執行下列操作:
      • 在「New Endpoint」(新增端點) 資訊卡中,從「Project」(專案) 下拉式選單中選取要設定端點的專案。
      • 從「Network」(網路) 下拉式選單中,選取端點的網路。
      • 如果尚未啟用 Network Connectivity API,請點選「啟用」。
    4. 如要設定自動建立服務連線政策的權限,請按一下「Confirm Network Setup」(確認網路設定)。

    如要進一步瞭解如何設定 Private Service Connect,請參閱「設定 Private Service Connect」。

    公開 IP 為執行個體新增公開 IP 位址。接著,您可以新增授權網路,連線至執行個體。

    執行個體可以同時擁有公開和私人 IP 位址。

    進一步瞭解如何使用公開 IP。

    已授權網路

    新增網路名稱和網路位址。 瞭解詳情。

    允許 Data API

    勾選這個核取方塊,即表示您允許授權使用者呼叫 Data API,在執行個體上執行 SQL 陳述式。如果執行個體只有私人 IP,這項設定可讓授權使用者透過公開網際網路,呼叫 Data API。

    安全性
    伺服器憑證授權單位模式

    針對這個 Cloud SQL 執行個體,選取簽署伺服器憑證的憑證授權單位 (CA) 類型。瞭解詳情。

    根據預設,在 Google Cloud 控制台建立執行個體時,執行個體會使用 Google 代管的內部憑證授權單位 (GOOGLE_MANAGED_INTERNAL_CA),也就是每個執行個體的 CA 選項。

    自動輪換伺服器憑證

    如果選取 Google 代管的 CAS 憑證授權單位 (CA) (GOOGLE_MANAGED_CAS_CA) 或客戶自行管理的 CAS 內部憑證授權單位 (CUSTOMER_MANAGED_CAS_CA) 選項,做為執行個體的伺服器 CA 模式,則可選擇是否要自動輪換執行個體的伺服器憑證。如要進一步瞭解如何自動輪換 Cloud SQL 伺服器憑證,請參閱「 啟用伺服器憑證自動輪換功能」。

    這個選項預設為停用。
    資料保護
    備份級別 執行個體的備份選項。您可以選擇進階備份或標準備份。
    自動備份 您希望開始備份的時間範圍。
    選擇要儲存備份的位置多數用途建議選取「多區域」。如需將備份儲存在特定區域 (例如基於法規原因),請選取「區域」,然後從「位置」下拉式選單中選取區域。
    選擇要儲存的自動備份量要保留的自動備份數量 (1 到 365 天)。瞭解詳情。
    啟用時間點復原 啟用時間點復原和交易記錄功能。瞭解詳情。
    啟用防刪除功能 決定是否要防止執行個體遭到意外刪除。瞭解詳情。
    啟用刪除執行個體後保留備份功能 決定是否要在刪除執行個體後保留自動和隨選備份。瞭解詳情。
    選擇要保留記錄檔的天數 將預寫記錄檔保留期限設為 1 到 7 天。預設值為 7 天。 瞭解詳情。
    維護作業
    偏好的維護期間 決定 Cloud SQL 可對執行個體執行中斷型維修的 1 小時期間。如未設定時間範圍,系統隨時可能執行中斷型維護作業。瞭解詳情。
    更新順序 相對於相同專案中的其他執行個體,您偏好的執行個體更新時間。瞭解詳情。
    標記
    新增標記 您可以使用資料庫旗標,控管執行個體的設定和參數。瞭解詳情。
    查詢洞察
    啟用查詢洞察

    勾選這個核取方塊,即可為執行個體啟用查詢洞察功能。 查詢洞察會提供資料庫查詢的詳細資訊,包括查詢效能、查詢文字和查詢執行計畫。選取查詢洞察後,您可以啟用與查詢洞察相關聯的其他功能。如要進一步瞭解這些功能和查詢洞察,請參閱「使用查詢洞察功能提升查詢效能」。

    標籤
    新增標籤為新增的每個標籤加入鍵和值。標籤可用來管理執行個體。
  13. 按一下「建立執行個體」。

    注意:建立執行個體可能需要幾分鐘。不過,您可以在建立執行個體時查看相關資訊。

gcloud

如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱 Cloud Shell 說明文件。

您必須使用 gcloud 243.0.0 以上版本。

  1. 使用 gcloud sql instances create 指令建立執行個體:
  2. Cloud SQL Enterprise Plus 版執行個體:

          gcloud sql instances create INSTANCE_NAME \
          --database-version=DATABASE_VERSION \
          --region=REGION \
          --tier=TIER \
          --root-password=ROOT_PASSWORD \
          --edition=ENTERPRISE_PLUS
        

    Cloud SQL Enterprise 版本執行個體:

          gcloud sql instances create INSTANCE_NAME \
          --database-version=DATABASE_VERSION \
          --region=REGION \
          --cpu=NUMBER_OF_vCPUs \
          --memory=MEMORY_SIZE \
          --root-password=ROOT_PASSWORD \
          --edition=ENTERPRISE
        

    執行個體名稱不需包含專案 ID。系統會在適當情況下自動執行這項操作 (例如在記錄檔中)。

    Cloud SQL Enterprise 版本的 vCPU 和記憶體大小值有限制。詳情請參閱「選擇 Cloud SQL Enterprise Plus 版本和 Cloud SQL Enterprise 版本」。

    舉例來說,下列字串會建立具有兩個 vCPU 和 7,680 MB 記憶體的執行個體:

        gcloud sql instances create myinstance \
        --database-version=SQLSERVER_2017_STANDARD \
        --region=us-central1 \
        --cpu=2 \
        --memory=7680MB \
        --root-password=EXAMPLE_PASSWORD \
        --edition=ENTERPRISE
        

    如要進一步瞭解不同的機器設定,請參閱「選擇機器系列」。

    如要瞭解執行個體設定的參數,請參閱 gcloud sql instances create。

    REGION 的預設值為 us-central1。

    請勿在執行個體名稱中加入機密或個人識別資訊,因為這類資訊會對外公開。
    執行個體名稱不必包含專案 ID。系統會在適當情況下 (例如在記錄檔中) 自動執行這項操作。

    如要建立高可用性執行個體,可以使用 --zone 和 --secondary-zone 參數,同時指定主要和次要可用區。在建立或編輯執行個體時,如要使用次要可用區,必須符合下列條件:

    • 可用區必須有效。
    • 如果指定次要可用區,則必須一併指定主要可用區。
    • 如果指定主要和次要可用區,兩者必須不同。
    • 如果指定主要和次要可用區,兩者必須屬於相同區域。

    您可以新增更多參數,決定其他執行個體設定:

    設定 參數 說明
    必要參數
    資料庫版本 --database-version 資料庫版本,取決於 Cloud SQL 版本。
    區域 --region 查看有效值。
    連線能力
    私人 IP

    私人服務連線

    --network

    --no-assign-ip (選填)

    --allocated-ip-range-name (選填)

    --enable-google-private-path (選填)



    Private Service Connect

    --no-assign-ip

    --enable-private-service-connect

    --allowed-psc-projects

    --psc-auto-connections

    --enable-psc-auto-connection-policy

    --network:指定要用於這個執行個體的虛擬私有雲網路名稱。必須已針對網路設定私人服務存取權。如果是全新或空白專案,您必須先啟用 servicenetworking.googleapis.com、分配 IP 範圍,並設定虛擬私有雲網路對接,才能建立執行個體。僅適用於 Beta 版指令 (gcloud beta sql instances create)。

    --no-assign-ip:執行個體只會有私人 IP 位址。

    --allocated-ip-range-name:如果指定,則會設定分配 IP 範圍的範圍名稱。例如:google-managed-services-default。範圍名稱應符合 RFC-1035,且長度介於 1 至 63 個字元。(gcloud alpha sql instances create)。

    如果 Cloud SQL 執行個體使用 Private Service Connect 建立私人 IP 連線,請使用下列旗標:

    --enable-private-service-connect:使用 Private Service Connect,啟用 Cloud SQL 執行個體的私人網路連線。詳情請參閱「Cloud SQL 的 Private Service Connect 總覽」。

    --allowed-psc-projects:以半形逗號分隔的清單,列出允許的專案 ID 或編號,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。

    --psc-auto-connections:如要為 Cloud SQL 執行個體自動設定端點,請使用這個旗標,指定 Private Service Connect 端點的用戶網路和專案。

    --enable-psc-auto-connection-policy:如果指定, Google Cloud 會在用戶網路和專案中,為 Private Service Connect 端點建立或更新服務連線政策。

    如要進一步瞭解如何設定 Private Service Connect,請參閱「設定 Private Service Connect」。

    Data API 存取權 --data-api-access 控管使用 Data API 連線至執行個體的連線能力。預設為不允許。將值設為 ALLOW_DATA_API,允許使用者透過 Data API 連線至執行個體。如果執行個體僅設定私人 IP 位址,授權使用者可以透過公開網際網路,呼叫執行個體中的 Data API。將值設為 DISALLOW_DATA_API,即可禁止使用 Data API。
    公開 IP --authorized-networks 如果是公開 IP 連線,只有來自授權網路的連線可以連至執行個體。瞭解詳情。
    伺服器 CA 模式 --server-ca-mode

    --server-ca-mode 旗標會設定執行個體的伺服器憑證授權單位 (CA) 類型。您可以選取下列任一選項:

    • GOOGLE_MANAGED_INTERNAL_CA:這是預設值。 如果選取這個選項,每個 Cloud SQL 執行個體專屬的內部 CA 會簽署該執行個體的伺服器憑證。
    • GOOGLE_MANAGED_CAS_CA:這個選項會使用由根 CA 和下層伺服器 CA 組成的 CA 階層,這些 CA 由 Cloud SQL 管理,並託管於 Google Cloud 憑證授權單位服務 (CA 服務)。區域中的從屬伺服器 CA 會簽署伺服器憑證,並由區域中的執行個體共用。
    • CUSTOMER_MANAGED_CAS_CA:這個選項可讓您定義 CA 階層,並管理 CA 憑證的輪替作業。在執行個體所在區域的 CA 服務中建立 CA 集區。系統會使用集區中的其中一個 CA 簽署伺服器憑證。 詳情請參閱「使用客戶自行管理的 CA」。
    自動輪換伺服器憑證 --server-certificate-rotation-mode

    --server-certificate-rotation-mode 旗標會設定執行個體的伺服器憑證輪換模式類型。您可以選取下列任一選項:

    • NO_AUTOMATIC_ROTATION:這是預設值。 如果選取這個選項,系統就不會自動輪換伺服器憑證。 伺服器憑證必須手動輪換。
    • AUTOMATIC_ROTATION_DURING_MAINTENANCE: 選取這個選項後,系統會在 Cloud SQL 排定維護作業或自助式維護更新期間,自動輪換伺服器憑證。 server_ca_mode 必須為 GOOGLE_MANAGED_CAS_CA 或 CUSTOMER_MANAGED_CAS_CA。
    網路架構 --enforce-new-sql-network-architecture 在建立執行個體時,強制使用新的網路架構。在專案完全升級至新網路架構前,如果使用這個旗標建立執行個體,可能會導致 IP 位址過度消耗,或是在分配的 IP 範圍內沒有足夠的 IP 位址時,無法建立執行個體。詳情請參閱「將執行個體升級為新版網路架構」和「分配 IP 位址範圍」。
    機型和儲存空間
    機型 --tier
    儲存空間類型 --storage-type 決定執行個體要使用 SSD 或 HDD 儲存空間。瞭解詳情。
    儲存空間容量 --storage-size 為執行個體佈建的儲存空間量,以 GB 為單位。瞭解詳情。
    自動增加儲存空間 --storage-auto-increase 決定 Cloud SQL 是否要在可用空間不足時,自動為執行個體提供更多儲存空間。瞭解詳情。
    自動增加儲存空間上限 --storage-auto-increase-limit 決定 Cloud SQL 可自動增加的儲存空間大小 (以 GB 為單位)。預設值為 unlimited,可讓儲存空間增加至執行個體級別的最大可用儲存空間。瞭解詳情。
    自動備份和高可用性
    高可用性 --availability-type 如要建立高可用性執行個體,請設為 REGIONAL。瞭解詳情。
    次要可用區 --secondary-zone 如要建立高可用性執行個體,可以使用 --zone 和 --secondary-zone parameters 指定主要和次要可用區。在建立或編輯執行個體時,使用次要可用區須遵守下列限制:
    • 可用區必須有效。
    • 如果指定次要可用區,則必須一併指定主要可用區。
    • 如果指定主要和次要可用區,兩者必須不同。

      如果指定主要和次要可用區,兩者必須屬於相同區域。

    自動備份 --backup-start-time 您希望開始備份的時間範圍。
    自動備份的保留設定 --retained-backups-count 要保留的自動備份數量。 瞭解詳情。
    交易記錄的保留設定 --retained-transaction-log-days 時間點復原交易記錄的保留天數。瞭解詳情。
    時間點復原 --enable-point-in-time-recovery 啟用時間點復原和交易記錄。 瞭解詳情。
    新增資料庫旗標
    資料庫旗標 --database-flags 您可以使用資料庫旗標,控管執行個體的設定和參數。進一步瞭解資料庫旗標。
    維護排程
    維護期間 --maintenance-window-day,
    --maintenance-window-hour
    決定 Cloud SQL 可對執行個體執行中斷型維修的 1 小時期間。如未設定時間範圍,系統隨時可能執行中斷型維護作業。瞭解詳情。
    維護時間 --maintenance-release-channel 相對於同一專案中的其他執行個體,您偏好的執行個體更新時間。請使用 preview 進行早期更新,並使用 production 進行後續更新。瞭解詳情。
    查詢洞察
    --insights-config-query-insights-enabled 啟用查詢洞察,提供查詢和查詢計畫分析。
    自訂 SAN
    新增自訂主體別名 (SAN) --custom-subject-alternative-names=DNS_NAMES

    如要使用自訂 DNS 名稱 (而非 IP 位址) 連線至 Cloud SQL 執行個體,請在建立執行個體時,設定自訂主體別名 (SAN)。您在自訂 SAN 設定中插入的自訂 DNS 名稱,會新增至執行個體伺服器憑證的 SAN 欄位。這樣一來,您就能安全地使用自訂 DNS 名稱和主機名稱驗證。

    您必須先設定 DNS 名稱和 IP 位址之間的對應關係,才能在用戶端和應用程式中使用自訂 DNS 名稱。這項程序稱為 DNS 解析。您可以在自訂 SAN 設定中,新增以逗號分隔的清單,最多可包含三個自訂 DNS 名稱。

  3. 記下系統自動指派的 IP 位址。

    如果您未使用 Cloud SQL Auth Proxy,則會將這個位址做為主機位址,供應用程式或工具連線至執行個體。

  4. 設定使用者密碼:
          gcloud sql users set-password sqlserver no-host --instance=[INSTANCE_NAME] \
           --password=[PASSWORD]
          

Terraform

如要建立執行個體,請使用 Terraform 資源。

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
  }
}

套用變更

如要在 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 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。

刪除變更

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

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

    terraform destroy

REST v1

1. 建立執行個體

下列基本 API 呼叫並未顯示所有可能欄位。如需 JSON 要求的原型,請參閱「 設定」。

另請參閱「 Instances:insert」頁面。如要瞭解執行個體設定 (包括區域的有效值),請參閱「執行個體設定」。如要瞭解機型,請參閱「選擇機器系列」。

請勿在 instance-id 中加入敏感或個人識別資訊,因為該值會對外公開。

執行個體名稱不必包含專案 ID。系統會在適當情況下 (例如在記錄檔中) 自動執行這項操作。

collation 欄位 (未顯示在下列基本 API 呼叫中) 可讓您為執行個體中資料庫使用的 定序類型設定預設值。這項定序預設值在執行個體層級是永久設定,但在資料庫層級則不是。您可以使用資料庫管理工具變更這項預設值,但只能針對您正在建立或更新的特定資料庫進行變更。執行個體建立後,您無法變更執行個體的預設定序 (除非重新建立執行個體)。如要瞭解 SQL Server 中的定序,請參閱「 定序和 Unicode 支援」。如需 JSON 要求的原型,請參閱「 設定」。您可以為 collation 參數指定以下範例字串:SQL_Latin1_General_CP1_CI_AS。

timeZone 欄位 (未顯示在下列基本 API 呼叫中) 可讓您設定執行個體的時區。建立執行個體後,您可以變更執行個體的時區。如需更多資訊和接受的字串清單,請參閱「 設定」。您可以為 timeZone 欄位指定下列範例字串:"Pacific Standard Time"。瞭解詳情。

如要建立與 Managed Microsoft AD 整合的執行個體,請在 domain 欄位中指定網域,例如 subdomain.mydomain.com。詳情請參閱「建立啟用 Windows 驗證的執行個體」。此外,請注意與其他專案中的 Managed Microsoft AD 網域整合時,應遵循的 程序和限制。

如要瞭解如何在要求主體中設定 machine-type 的值,請參閱「選擇機器系列」。

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

  • PROJECT_ID:您的專案 ID。
  • INSTANCE_ID:執行個體 ID。
  • REGION:區域名稱。
  • DATABASE_VERSION:資料庫版本的列舉字串。例如:SQLSERVER_2017_STANDARD。
  • PASSWORD:root 使用者的密碼。
  • MACHINE_TYPE:機器 (層級) 類型的列舉字串。例如:
    db-perf-optimized-N-4。
  • EDITION_TYPE:Cloud SQL 版本。預設值為 ENTERPRISE。
  • DATA_CACHE_ENABLED:(選用) 如要為執行個體啟用資料快取,請將這個參數的值設為 true。
  • PRIVATE_NETWORK:指定要用於這個執行個體的虛擬私有雲 (VPC) 網路名稱。網路必須已設定私人服務連線。
  • AUTHORIZED_NETWORKS:如果是公開 IP 連線,請指定可連至執行個體的授權網路連線。
  • CA_MODE:指定執行個體的憑證授權單位階層,可以是 GOOGLE_MANAGED_INTERNAL_CA 或 GOOGLE_MANAGED_CAS_CA。如未指定 serverCaMode,則預設設定為 GOOGLE_MANAGED_INTERNAL_CA。 這項功能為預先發布版。
  • SERVER_CERTIFICATE_ROTATION_MODE:如要自動輪換執行個體的伺服器憑證,請指定 AUTOMATIC_ROTATION_DURING_MAINTENANCE。如未指定 serverCertificateRotationMode,則預設設定為 NO_AUTOMATIC_ROTATION。
  • DNS_NAMES:在 Cloud SQL 執行個體的伺服器憑證中,新增以半形逗號分隔的 DNS 名稱清單,最多可列出三個名稱。您可以使用單一憑證保護多個 DNS 名稱。這項功能目前為預先發布版,僅適用於 CUSTOMER_MANAGED_CAS_CA 執行個體。

您可以使用 sqlNetworkArchitecture 欄位,強制在建立執行個體時使用新的網路架構,即使專案尚未完全升級也沒問題。如要進一步瞭解新版網路架構及其影響,請參閱「 將執行個體升級為新版網路架構」和「分配 IP 位址範圍」。

HTTP 方法和網址:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

JSON 要求主體:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "dataCacheConfig": {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "ipConfiguration": {
      "privateNetwork": "PRIVATE_NETWORK",
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      "ipv4Enabled": false,
      "serverCaMode": "CA_MODE",
      "serverCertificateRotationMode": "SERVER_CERTIFICATE_ROTATION_MODE",
      "customSubjectAlternativeNames": "DNS_NAMES"
    },
    "dataApiAccess": "ALLOW_DATA_API"
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

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

您應該會收到如下的 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-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

建立執行個體後,您可以進一步設定預設使用者帳戶。

2. 擷取執行個體的 IPv4 位址

您也可以選擇擷取自動指派的 IPv4 位址。在回應中,該位址位於 ipAddress 欄位。

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

  • 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": "DATABASE_VERSION",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "MACHINE_TYPE",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "ZONE",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "19:00",
      "kind": "sql#backupConfiguration",
      "enabled": true
    },
    "settingsVersion": "1",
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "PROJECT_ID",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "BACKEND_TYPE",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "connectionName": "PROJECT_ID:REGION:INSTANCE_ID",
  "name": "INSTANCE_ID",
  "region": "REGION",
  "gceZone": "ZONE"
}

REST v1beta4

1. 建立執行個體

下列基本 API 呼叫並未顯示所有可能欄位。如需 JSON 要求的原型,請參閱「 設定」。

另請參閱「 Instances:insert」頁面。如要瞭解執行個體設定 (包括區域的有效值),請參閱「執行個體設定」。如要瞭解機型,請參閱「選擇機器系列」。

請勿在 instance-id 中加入私密或個人識別資訊,因為該值會對外顯示。

執行個體名稱不必包含專案 ID。系統會在適當情況下 (例如在記錄檔中) 自動執行這項操作。

collation 欄位 (未顯示在下列基本 API 呼叫中) 可讓您為執行個體中資料庫使用的 定序類型設定預設值。這個定序預設值在執行個體層級是永久性的,但在資料庫層級則不是。您可以使用資料庫管理工具變更這項預設值,但僅限於您建立或更新的特定資料庫。執行個體建立後,除非重新建立,否則無法變更預設定序。如要瞭解 SQL Server 中的定序,請參閱「 定序和 Unicode 支援」。如需 JSON 要求的原型,請參閱「 設定」。您可以為 collation 參數指定以下範例字串:SQL_Latin1_General_CP1_CI_AS。

timeZone 欄位 (未顯示在下列基本 API 呼叫中) 可讓您設定執行個體的時區。建立執行個體後,您可以變更執行個體的時區。如需更多資訊和可接受的字串清單,請參閱「 設定」。您可以為 timeZone 欄位指定下列範例字串:"Pacific Standard Time"。瞭解詳情。

如要建立與 Managed Service for Microsoft Active Directory 整合的執行個體,請在 domain 欄位中指定網域,例如 subdomain.mydomain.com。詳情請參閱「 建立採用 Windows 驗證機制的執行個體」。此外,請注意在不同專案中與 Managed Microsoft AD 網域整合的 程序和限制。

如要瞭解如何在要求主體中設定 machine-type 的值,請參閱「選擇機器系列」。

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

  • PROJECT_ID:您的專案 ID。
  • INSTANCE_ID:執行個體 ID。
  • REGION:區域名稱。
  • DATABASE_VERSION:資料庫版本的列舉字串。
  • MACHINE_TYPE:機器 (層級) 類型的列舉字串。例如:
    db-perf-optimized-N-4。
  • PASSWORD:root 使用者的密碼。
  • MACHINE_TYPE:機器 (層級) 類型的列舉字串,例如 db-custom-[CPUS]-[MEMORY_MBS]。
  • EDITION_TYPE:Cloud SQL 版本。預設值為 ENTERPRISE。
  • DATA_CACHE_ENABLED:(選用) 如要為執行個體啟用資料快取,請將這個參數的值設為 true。
  • PRIVATE_NETWORK:指定要用於這個執行個體的虛擬私有雲 (VPC) 網路名稱。網路必須已設定私人服務存取權。
  • AUTHORIZED_NETWORKS:如果是公開 IP 連線,請指定可連線至執行個體的授權網路連線。
  • CA_MODE:指定執行個體的憑證授權單位階層,可以是 GOOGLE_MANAGED_INTERNAL_CA 或 GOOGLE_MANAGED_CAS_CA。如未指定 serverCaMode,則預設設定為 GOOGLE_MANAGED_INTERNAL_CA。 這項功能為預先發布版。
  • SERVER_CERTIFICATE_ROTATION_MODE:如要自動輪換執行個體的伺服器憑證,請指定 AUTOMATIC_ROTATION_DURING_MAINTENANCE。如未指定 serverCertificateRotationMode,則預設設定為 NO_AUTOMATIC_ROTATION。
  • DNS_NAMES:在 Cloud SQL 執行個體的伺服器憑證中,新增以半形逗號分隔的 DNS 名稱清單,最多可列出三個名稱。您可以使用單一憑證保護多個 DNS 名稱。這項功能目前為預先發布版,僅適用於 CUSTOMER_MANAGED_CAS_CA 執行個體。

您可以使用 sqlNetworkArchitecture 欄位,強制在建立執行個體時使用新的網路架構,即使專案尚未完全升級也沒問題。如要進一步瞭解新版網路架構及其影響,請參閱「 將執行個體升級為新版網路架構」和「分配 IP 位址範圍」。

HTTP 方法和網址:

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

JSON 要求主體:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "backupConfiguration": {
      "enabled": true
    },
    "dataCacheConfig": {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "ipConfiguration": {
      "privateNetwork": "PRIVATE_NETWORK",
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      "ipv4Enabled": false,
      "serverCaMode": "CA_MODE",
      "serverCertificateRotationMode": "SERVER_CERTIFICATE_ROTATION_MODE",
      "customSubjectAlternativeNames": "DNS_NAMES"
    },
    "dataApiAccess": "ALLOW_DATA_API"
  },
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}

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

您應該會收到如下的 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-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

建立執行個體後,您可以進一步設定預設使用者帳戶。

2. 擷取執行個體的 IPv4 位址

您也可以選擇擷取自動指派的 IPv4 位址。在回應中,該位址位於 ipAddress 欄位。

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

  • 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": "DATABASE_VERSION",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "MACHINE_TYPE",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "ZONE",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "19:00",
      "kind": "sql#backupConfiguration",
      "enabled": true
    },
    "settingsVersion": "1",
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "PROJECT_ID",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "BACKEND_TYPE",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "connectionName": "PROJECT_ID:REGION:INSTANCE_ID",
  "name": "INSTANCE_ID",
  "region": "REGION",
  "gceZone": "ZONE"
}
如要瞭解如何為這項工作建構基礎 REST API 要求,請參閱 instances:insert 頁面上的 APIs Explorer。

產生寫入端點

寫入端點是全域網域名稱服務 (DNS) 名稱,會自動解析為目前主要執行個體的 IP 位址。如果副本執行容錯移轉或切換作業,這個端點會自動將傳入連線重新導向至新的主要執行個體。您可以在 SQL 連線字串中使用寫入端點,而非 IP 位址。使用寫入端點,即可避免在區域中斷時變更應用程式連線。

如要進一步瞭解如何使用寫入端點連線至執行個體,請參閱「使用寫入端點連線至執行個體」。

機型

決定 Cloud SQL 執行個體可用的記憶體和虛擬核心。您可以設定不同機器系列的機型。不同機器系列的可用性取決於 Cloud SQL 版本和區域。

  • Cloud SQL Enterprise Plus 版執行個體: Cloud SQL 提供下列機器系列的預先定義機型:

  • Cloud SQL Enterprise 版本執行個體: Cloud SQL 提供下列機器系列的預先定義和自訂機型:

如果您需要即時處理,例如線上交易處理 (OLTP),請確保執行個體有足夠的記憶體,可容納整個工作集。不過,還有其他因素會影響記憶體需求,例如有效連線數量和內部負擔程序。執行負載測試,避免正式環境發生效能問題。

設定執行個體時,請選取足夠的記憶體和 vCPU 來處理需求,並隨著需求增加而擴充執行個體。如果機器設定的 vCPU 數量不足,可能無法享有服務水準協議保障。詳情請參閱操作指南。

詳情請參閱「選擇機器系列」。

疑難排解

問題 疑難排解
錯誤訊息:The zone or region does not have sufficient resources to handle the request at the moment.

在提出執行個體建立要求時,所選可用區沒有足夠的容量,無法提供要求的資源或 VM 類型。在提出要求時,該特定區域位置可能同時有大量作業需求。

如要解決這個問題,請在其他可用區中重新建立執行個體,或在其他時間點,於發生錯誤的可用區中重新建立執行個體。

錯誤訊息:Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider。 分配的 IP 範圍內沒有其他可用位址。可能的情境包括:
  • 私人服務連線的分配 IP 範圍大小小於 /24。
  • 私人服務連線的分配 IP 範圍太小,無法容納 Cloud SQL 執行個體數量。
  • 如果在多個區域建立執行個體,則分配的 IP 範圍大小需求會較大。查看分配的範圍大小

如要解決這個問題,您可以擴大現有的分配 IP 範圍,或為私人服務連線分配額外的 IP 範圍。詳情請參閱「分配 IP 位址範圍」。

如果您在建立 Cloud SQL 執行個體時使用了 --allocated-ip-range-name 旗標,則只能擴充指定的 IP 範圍。

分配新範圍時,請注意分配範圍不得與任何現有分配範圍重疊。

建立新的 IP 範圍後,請使用下列指令更新虛擬私有雲對接:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

如要擴充現有分配,請務必只增加分配範圍,不要減少。舉例來說,如果原始分配為 10.0.10.0/24,則新的分配至少應為 10.0.10.0/23。

一般來說,如果從 /24 分配開始,每項條件 (額外的執行個體類型群組、額外的區域) 將 /mask 減少 1 是不錯的經驗法則。舉例來說,如果嘗試在同一個分配項目上建立這兩種執行個體類型群組,只要從 /24 變更為 /23 即可。

擴充現有 IP 範圍後,請使用下列指令更新虛擬私有雲對接:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
錯誤訊息:Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]。 再次嘗試建立 Cloud SQL 執行個體。
錯誤訊息:HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

使用下列指令啟用 Service Networking API,然後再次嘗試建立 Cloud SQL 執行個體。

gcloud services enable servicenetworking.googleapis.com \
--project=PROJECT_ID
    
錯誤訊息:Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID。 使用私人 IP 位址建立執行個體時,系統會使用 Service Networking API 即時建立服務帳戶。如果您最近才啟用 Service Networking API,系統可能不會建立服務帳戶,且執行個體建立作業會失敗。在這種情況下,您必須等待服務帳戶在整個系統中傳播,或手動新增服務帳戶並授予必要權限。
錯誤訊息:More than 3 subject alternative names are not allowed. 您嘗試使用自訂 SAN,將三個以上的 DNS 名稱新增至 Cloud SQL 執行個體的伺服器憑證。執行個體最多只能新增三個 DNS 名稱。
錯誤訊息:Subject alternative names %s is too long. The maximum length is 253 characters. 如要將 DNS 名稱新增至 Cloud SQL 執行個體的伺服器憑證,請確認名稱不超過 253 個字元。
錯誤訊息:Subject alternative name %s is invalid.

確認要新增至 Cloud SQL 執行個體伺服器憑證的 DNS 名稱符合下列條件:

  • 不含萬用字元。
  • 不含結尾點。
  • 符合 RFC 1034 規格。

後續步驟

  1. 在執行個體上建立 SQL Server 資料庫。
  2. 在執行個體上建立 SQL Server 使用者。
  3. 保護及控管執行個體的存取權。
  4. 使用 SQL Server 用戶端連線至執行個體。
  5. 將資料匯入資料庫。
  6. 瞭解執行個體設定。