是否可以创建Azure数据库为PostgreSQL灵活服务器-恢复服务器->(备份和恢复)使用terraform?

igsr9ssn  于 2022-11-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(212)

Azure Database for PostgreSQL Flexible Server会自动备份数据库。如果意外删除任何数据库,我们可以通过创建一个新的灵活服务器从备份数据库恢复数据库。我知道如何从Azure门户做到这一点。Terraform代码也可以为PostgreSQL Flexible Server配置“备份和恢复”-恢复服务器。
Azure文档中记录的手动任务的确切摘要:https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-restore-server-portal。只是我想做的任务使用terraform。除此之外,确保适当的登录和数据库级别的权限
我真的很感谢任何支持和帮助

y4ekin9u

y4ekin9u1#

可以使用terraform为PostgreSQL灵活服务器备份创建Azure数据库

  • 请使用下面的terraform代码恢复服务器 *
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "RG_NAME"
  location = "EASTUS"
}

resource "azurerm_virtual_network" "example" {
  name                = "example-vn"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  address_space       = ["10.0.0.0/16"]
}

resource "azurerm_subnet" "example" {
  name                 = "example-sn"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.2.0/24"]
  service_endpoints    = ["Microsoft.Storage"]
  delegation {
    name = "fs"
    service_delegation {
      name = "Microsoft.DBforPostgreSQL/flexibleServers"
      actions = [
        "Microsoft.Network/virtualNetworks/subnets/join/action",
      ]
    }
  }
}
resource "azurerm_private_dns_zone" "example" {
  name                = "example.postgres.database.azure.com"
  resource_group_name = azurerm_resource_group.example.name
}

resource "azurerm_private_dns_zone_virtual_network_link" "example" {
  name                  = "exampleVnetZone.com"
  private_dns_zone_name = azurerm_private_dns_zone.example.name
  virtual_network_id    = azurerm_virtual_network.example.id
  resource_group_name   = azurerm_resource_group.example.name
}

resource "azurerm_postgresql_flexible_server" "example" {
  name                   = "example-psqlflexibleserver"
  resource_group_name    = azurerm_resource_group.example.name
  location               = azurerm_resource_group.example.location
  version                = "12"
  delegated_subnet_id    = azurerm_subnet.example.id
  private_dns_zone_id    = azurerm_private_dns_zone.example.id
  administrator_login    = "psqladmin"
  administrator_password = "H@Sh1CoR3!"
  zone                   = "1"

  storage_mb = 32768
  backup_retention_days = 30
  geo_redundant_backup_enabled = true

  sku_name   = "GP_Standard_D4s_v3"
  depends_on = [azurerm_private_dns_zone_virtual_network_link.example]
 
}
  • 这里我提到了RG_name、子网、虚拟机、Vnet、数据库名称、密码和备份策略天数 *
  • 我已指定备份策略保留天数为30,策略保留天数应介于1到35之间,默认值为7天 *
  • 在运行脚本之前,我们必须检查相应的登录服务器详细信息 *
  • 之后,按照以下步骤执行文件 *
terraform init
  • 将初始化文件 *

Terraform plan
  • 这将创建一个执行计划,并预览Terraform计划对基础架构进行的更改 *

Terraform apply
  • 这将根据配置创建或更新基础架构 *

  • 以前它是默认值,geo_redundant_backup_enabledfalse我已将其设置为 true,备份策略将为30天 *
  • 您可以使用此文档作为参考 *

相关问题