Terraform中的Azure SQL备份设置
正在尝试在Terraform文件中设置参数以备份Azure SQL server 在AWS中,我可以添加一个键,如: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上找到的备
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_服务器,它实际上支持相同的数据库类型,包括短期和长期备份。我现在就试试,过几个小时再告诉你。谢谢分享。谢谢。我至少创建了一个使用上述代码的长期备份策略。