簡體   English   中英

如何將 Azure SQL 數據庫實例設置為 Min 0,5 vCores 和 Terraform?

[英]How to set Azure SQL database instance with Min 0,5 vCores with Terraform?

我有 Terraform 並設置 Azure SQL 數據庫。

當前計算硬件定義為 Terraform:

requested_service_objective_name = "GP_S_Gen5_4"

這將為 Max vCores 4 和 Min vCores 1 配置計算硬件。

我需要將 min vCores 配置為 0,5。 如果我設置 0.5,然后使用“GP_S_Gen5_4”部署 Terraform,我會自動升級到 Min vCores 1。

當 Terraform 部署時,我可以做些什么來將大小配置為 0,5 或 1 個實際最小值?

在此處輸入圖像描述

正如接受的答案所回答的那樣,SQL 數據庫有兩個 terraform API,但請注意,它是azurerm_sql_database (已棄用)和現在標准的azurerm_mssql_database

與接受的答案不同,我建議要小心, azurerm_mssql_elasticpool完全是另外一回事,它允許您將資源分布在多個數據庫上。 從你的問題來看,我認為你不需要設置它,因為它只會增加你的成本。

使用官方模塊,我可以毫不費力地指定最小容量0.5 ,為此有一個設置min_capacity ,這對我來說似乎很實用。 不過,它默認為0 ,這不是一個可接受的值,所以一定要設置它。 例如以下配置:

resource "azurerm_mssql_server" "this" {
  name                         = "demo-min-capacity"
  resource_group_name          = azurerm_resource_group.this.name
  location                     = azurerm_resource_group.this.location
  version                      = "12.0"
  administrator_login          = "..."
  administrator_login_password = "..."
}

resource "azurerm_mssql_database" "this" {
  name           = "demo"
  server_id      = azurerm_mssql_server.this.id
  collation      = "SQL_Latin1_General_CP1_CI_AS"
  max_size_gb    = 20

  sku_name                    = "GP_S_Gen5_1"
  zone_redundant              = false
  auto_pause_delay_in_minutes = 60
  min_capacity                = 0.5

  storage_account_type = "LRS"
}

導致 azure 門戶上的此設置: 在此處輸入圖像描述

資源azurerm_mssql_database沒有設置最大 vcores 的屬性,它在sku_name的最后部分指定。 因此,如果您想擁有更多的最大 vcores,請增加 sku。 min_capacity設置為您需要的最小 vcore 數量。 設置auto_pause_delay_in_minutes以強制數據庫 go 在 x 分鍾不活動后進入暫停模式。 此變量應為 60 分鍾或更長,您也可以將其設置為 -1,這將使數據庫以最小容量運行。

如果您需要普通的 sql 數據庫,我不建議使用azurerm_mssql_elasticpool ,它有其他用途。 請參閱下文或閱讀文檔

在此處輸入圖像描述

一些一般性建議/指南:

  • 如果您需要快速縮放,請不要將最小 vcore 數量設置得太低。 Vcore 縮放也需要一些時間來傳播。
  • 將開發測試環境中的數據庫設置為自動暫停延遲,以節省不用時的成本。
  • 對於經常使用的生產環境,將自動暫停延遲設置為 -1。
  • 當數據庫暫停時,您的應用程序必須能夠處理連接重試。 第一次請求后,數據庫通常需要一些時間才能啟動。

有兩個 terraform API, azurerm_mssql_databaseazurerm_mssql_elasticpool

azurerm_mssql_database不支持基於 vCore 或 DTU 的數據庫配置。 只有azurerm_mssql_elasticpool v3.0 API 允許基於 vCore 和 DTU 的配置。

因此,要使用 terraform 聲明 vCore,您需要在 Elastic Pool 中部署數據庫並使用以下示例代碼。

resource "azurerm_mssql_elasticpool" "example" {
  name                = "test-epool"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  server_name         = azurerm_sql_server.example.name
  license_type        = "LicenseIncluded"
  max_size_gb         = 756

  sku {
    name     = "BasicPool"
    tier     = "Basic"
    family   = "Gen4"
    capacity = 4
  }

  per_database_settings {
    min_capacity = 0.25
    max_capacity = 4
  }
}

此處參考azurerm_mssql_database官方文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM