Terraform中的Azure SQL备份设置

Terraform中的Azure SQL备份设置,terraform,terraform-provider-azure,azure-sql-server,Terraform,Terraform Provider Azure,Azure Sql Server,正在尝试在Terraform文件中设置参数以备份Azure SQL server 在AWS中,我可以添加一个键,如: allocated_storage = 1000 engine_version = “13.00.4451.0.v1” backup_window = “18:00-18:30” backup_retention_period = 14 我找不到类似的密钥来备份Azure SQL。以下是我在Terraform文档和web上找到的备

正在尝试在Terraform文件中设置参数以备份Azure SQL server

在AWS中,我可以添加一个键,如:

      allocated_storage = 1000
      engine_version = “13.00.4451.0.v1”
      backup_window = “18:00-18:30”
      backup_retention_period = 14
我找不到类似的密钥来备份Azure SQL。以下是我在Terraform文档和web上找到的备份密钥:

  resource "azurerm_sql_server" "some_erver" {
    administrator_login          = "some_login"
    administrator_login_password = "some_password"
    location                     ="some_location"
    name                         = "some_server"
    resource_group_name          = "some_resource"
    version                      = "some_version"

  tags = {
    environment  = "t"
    stack-name   = "name"
    stack-number = "number"
    app-number   = "app-number"
    logicmonitor = "bool"
  }
  backup {
    frequency = "Daily"
    time      = "04:00"
  }

  retention_daily {
    count = 30
  }
}
但是Terraform应用管道失败,并显示一条消息:

     Error: azurerm_sql_server.enxtz256-db01: : invalid or unknown key: backup

     Error: azurerm_sql_server.enxtz256-db01: : invalid or unknown key: retention_daily

非常感谢terraform文档提供的任何帮助,它没有
备份
保留\u每日
块支持

如果您想创建Azure SQL数据库的备份,也许可以考虑使用

例如:

resource "azurerm_resource_group" "example" {
  name     = "tfex-recovery_vault"
  location = "West US"
}

resource "azurerm_recovery_services_vault" "example" {
  name                = "tfex-recovery-vault"
  location            = "${azurerm_resource_group.example.location}"
  resource_group_name = "${azurerm_resource_group.example.name}"
  sku                 = "Standard"
}

resource "azurerm_recovery_services_protection_policy_vm" "test" {
  name                = "tfex-recovery-vault-policy"
  resource_group_name = "${azurerm_resource_group.example.name}"
  recovery_vault_name = "${azurerm_recovery_services_vault.example.name}"

  timezone = "UTC"

  backup {
    frequency = "Daily"
    time      = "23:00"
  }

  retention_daily {
    count = 10
  }
参考博客:

我还发现另一个教程可以帮助使用terraform为Azure SQL数据库创建备份:

摘要:

Azure SQL数据库

现在,转到SQL数据库。您可以在这里看到,资源块基本相同,给它一个名称、资源组和位置

请注意,在该块的末尾,我添加了一个PowerShell命令来设置数据库的长期备份保留策略。这将使您能够设置每月或每周的备份保留计划,以满足您的需要

resource "azurerm_sql_database" "test2" {
  name                = "sqldbtf01"
  resource_group_name = "${azurerm_resource_group.test2.name}"
  location            = "North Central US"
  server_name         = "${azurerm_sql_server.test2.name}"

  threat_detection_policy {
    state                      = "Enabled"
    email_addresses            = ["dbgrl93@gmail.com"]
    retention_days             = "30"
    storage_account_access_key = "${azurerm_storage_account.test2sa.primary_access_key}"
    storage_endpoint           = "${azurerm_storage_account.test2sa.primary_blob_endpoint}"
    use_server_default         = "Enabled"
  }

  provisioner "local-exec" {
    command     = "Set-AzureRmSqlDatabaseBackupLongTermRetentionPolicy -ResourceGroupName ${azurerm_resource_group.test2.name}  -ServerName ${azurerm_sql_server.test2.name} -DatabaseName 'sqldbsrvrtf01' -WeeklyRetention P12W -YearlyRetention P5Y -WeekOfYear 16 "
    interpreter = ["PowerShell", "-Command"]
  }
}

希望这有帮助。

您可以尝试ARM模板:

resource "azurerm_template_deployment" "example" {
  name                = "example-db-retention"
  resource_group_name = azurerm_resource_group.example.name
  template_body = <<-DEPLOY
    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [
        {
          "apiVersion" : "2017-03-01-preview",
          "type" : "Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies",
          "name" : "${azurerm_sql_server.example.name}/${azurerm_sql_database.example.name}/default",
          "properties" : {
            "weeklyRetention": "P45D"
          }
        },
        {
          "apiVersion": "2017-10-01-preview",
          "type": "Microsoft.Sql/servers/databases/backupShortTermRetentionPolicies",
          "name": "${azurerm_sql_server.example.name}/${azurerm_sql_database.example.name}/default",
          "properties": {
            "retentionDays": 14
          }
        }
      ]
    }
    DEPLOY

  deployment_mode = "Incremental"
}
resource“azurerm\u模板\u部署”示例{
name=“示例数据库保留”
resource\u group\u name=azurerm\u resource\u group.example.name

template_body=我想指出,根据开发团队()
azurerm\u sql\u数据库
不再更新。相反,所有新功能都添加到
azurerm\u mssql\u数据库
,该数据库实际上部署了相同的数据库类型。根据地形,
azurerm\u mssql\u数据库
支持两种短期备份(时间点恢复)以及长期备份。这可以通过以下内嵌块进行管理:

长期保留策略
块支持以下内容:

每周保留期-(可选)LTR的每周保留期策略 以ISO 8601格式备份。有效值介于1到520周之间。 e、 g.P1Y、P1M、P1W或P7D

每月\u保留期-(可选)每月 ISO 8601格式的LTR备份的保留策略。有效值 介于1到120个月之间。例如,P1Y、P1M、P4W或P30D

年度保留期—(可选)LTR的年度保留政策 ISO 8601格式的备份。有效值介于1到10年之间。 e、 g.P1Y、P12M、P52W或P365D

年中的一周-(可选)年中的一周 以ISO 8601格式进行年度备份的年份。值必须为 在1到52之间

短期保留策略
块支持以下内容:

保留天数—(必需)时间点还原配置。值 必须介于7和35之间

如果您不知何故来自
azurerm\u sql\u数据库
,并希望迁移到
azurerm\u mssql\u数据库
,您可以执行以下步骤:

  • 运行:地形状态rm“azurerm\u sql\u database.database”
  • 将资源更改为,包括相应的字段
  • 运行:terraform import azurerm_mssql_database.database“/非常长/数据库/id”
  • 运行:地形应用


.

你能给我们看一下整个terraform备份代码吗?@LeonYue请看我的编辑。我知道有点晚了,但我建议你迁移到azurerm_mssql_服务器,它实际上支持相同的数据库类型,包括短期和长期备份。我现在就试试,过几个小时再告诉你。谢谢分享。谢谢。我至少创建了一个使用上述代码的长期备份策略。