如何使用 Terraform 设置最小 0,5 个 vCore 的 Azure SQL 数据库实例?

问题描述 投票:0回答:3

我有 Terraform 并正在设置 Azure SQL 数据库。

当前计算硬件的定义如 Terraform 中所示:

requested_service_objective_name =“GP_S_Gen5_4”

这将为最大 vCore 4 和最小 vCore 1 配置计算硬件。

我需要将最小 vCores 配置为 0,5。 如果我设置 0.5,然后使用“GP_S_Gen5_4”部署 Terraform,我会自动升级到最小 vCores 1。

当 Terraform 部署时,我可以做些什么来将大小配置为 0,5 或 1 实际分钟?

enter image description here

azure-sql-database terraform-provider-azure azure-rm
3个回答
5
投票

资源

azurerm_mssql_database
没有设置最大vcores的属性,它在
sku_name
的最后部分指定。因此,如果您想要更多最大 vcore,请增加 sku。将
min_capacity
设置为您需要的最小 vcore 数量。设置
auto_pause_delay_in_minutes
强制数据库在 x 分钟不活动后进入暂停模式。该变量应该为 60 分钟或更高,您也可以将其设置为 -1,这将使数据库以最小容量运行。

如果你需要一个普通的sql数据库,我不建议使用

azurerm_mssql_elasticpool
,它还有其他用途。请参阅下文或阅读文档

enter image description here

一些一般性建议/指南:

  • 如果您需要快速扩展的数据库,请勿将最小 vcore 数量设置得太低。 Vcore 缩放也需要一些时间来传播。
  • 将开发和测试环境中的数据库设置为在不使用时自动暂停延迟以节省成本。最好至少 60 分钟。
  • 对于经常使用的生产环境,将自动暂停延迟设置为-1。
  • 在第一次请求后,数据库通常需要一些时间才能启动。当数据库暂停时,您的应用程序必须能够处理连接重试。我见过一些应用程序没有正确执行此操作,从而导致奇怪的行为。

3
投票

正如已接受的答案所回答的,有两个用于 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 门户上产生了此设置: enter image description here


-1
投票

有两个 terraform API,

azurerm_mssql_database
azurerm_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官方文档。

© www.soinside.com 2019 - 2024. All rights reserved.