我有一个sql数据库是在一个弹性池,当terraform运行时,它试图将其添加到辅助服务器上的副本,并将其添加到那里的弹性池,但我得到一个错误:
错误:等待创建/更新数据库:(Name "Test"/服务器名"testsql-secondary;/资源组"testnonprod"): Code="InvalidSku"消息="指定的sku 'ElasticPool'无效。">
这是我在主服务器上创建弹性池的地形。
resource "azurerm_mssql_elasticpool" "elastic_pool" {
for_each = toset(var.elasticpool_list)
name = each.key
resource_group_name = var.resource_group_name
location = var.location
server_name = azurerm_mssql_server.sql_server.name
max_size_gb = 100
sku {
name = "StandardPool"
tier = "Standard"
capacity = 100
}
per_database_settings {
min_capacity = 0
max_capacity = 10
}
创建二级弹性池的代码。
resource "azurerm_mssql_elasticpool" "elastic_pool_secondary" {
for_each = toset(var.failover_group == "true" ? var.elasticpool_list : [])
name = each.key
resource_group_name = var.resource_group_name
location = var.location
server_name = azurerm_mssql_server.sql_server_secondary[0].name
max_size_gb = 100
sku {
name = "StandardPool"
tier = "Standard"
capacity = 100
}
per_database_settings {
min_capacity = 0
max_capacity = 10
}
和我用来创建数据库的代码。
resource "azurerm_mssql_database" "sql_db" {
for_each = var.sql_db_list
name = each.key
server_id = azurerm_mssql_server.sql_server.id
collation = "SQL_Latin1_General_CP1_CI_AS"
read_scale = false
sku_name = each.value["SKU"]
zone_redundant = false
min_capacity = each.value["min_capacity"]
auto_pause_delay_in_minutes = var.auto_pause_delay
elastic_pool_id = each.value["elasticpool_name"] != "" ? azurerm_mssql_elasticpool.elastic_pool[each.value["elasticpool_name"]].id : null
resource "azurerm_mssql_database" "sql_db_secondary" {
for_each = var.failover_group == "true" ? var.sql_db_list : {}
name = each.key
server_id = azurerm_mssql_server.sql_server_secondary.0.id
collation = "SQL_Latin1_General_CP1_CI_AS"
sku_name = each.value["SKU"]
#zone_redundant = false
min_capacity = each.value["min_capacity"]
create_mode = "Secondary"
creation_source_database_id = azurerm_mssql_database.sql_db[each.key].id
elastic_pool_id = each.value["elasticpool_name"] != "" ? azurerm_mssql_elasticpool.elastic_pool_secondary[each.value["elasticpool_name"]].id : null
数据库来自于一个地图,它是这样的
"Test" = {
"SKU" = "ElasticPool"
"min_capacity" = "0.5"
"Namespaces" = [""]
"elasticpool_name" = "test-elasticpool"
}
我已经尝试将SKU更改为一些不同的东西,没有一个工作。当我查看azure门户时,它显示SKU为ElasticPool?如有任何帮助,不胜感激。
我发现这里的问题。创建辅助服务器的资源不需要定义SKU。当我注释掉后,它现在创建了我们想要的辅助服务器,并将其添加到弹性池中。