Delen via


Quickstart: Back-up configureren voor Azure Database for PostgreSQL - Flexibele servers met een Bicep-bestand

In deze quickstart wordt beschreven hoe u back-ups van Azure Database for PostgreSQL - Flexible Server configureert met een Azure Bicep-bestand.

Met Azure Backup kunt u een back-up maken van uw Azure PostgreSQL - Flexibele servers met behulp van meerdere clients, zoals Azure Portal, PowerShell, CLI, Azure Resource Manager, Bicep, enzovoort. Dit artikel is gericht op het implementeren van een Bicep-bestand om een Backup-kluis te maken en vervolgens een back-up te configureren voor de Azure PostgreSQL - Flexible Server. Meer informatie over het ontwikkelen van Bicep-bestanden.

Bicep is een taal voor het declaratief implementeren van Azure-resources. U kunt Bicep gebruiken in plaats van JSON om uw Azure Resource Manager-sjablonen (ARM-sjablonen) te ontwikkelen. Bicep-syntaxis vermindert de complexiteit en verbetert de ontwikkelervaring. Bicep is een transparante abstractie van ARM-sjabloon JSON die alle mogelijkheden van JSON-sjablonen biedt. Tijdens de implementatie converteert bicep CLI een Bicep-bestand naar een ARM-sjabloon-JSON. In een Bicep-bestand worden de Azure-resources en resource-eigenschappen vermeld, zonder een reeks programmeeropdrachten te schrijven om resources te maken.

Resourcetypen, API-versies en eigenschappen die geldig zijn in een ARM-sjabloon, zijn ook geldig in een Bicep-bestand.

Vereiste voorwaarden

Zie Bicep-hulpprogramma's installeren om uw omgeving voor Bicep-ontwikkeling in te stellen.

Notitie

Installeer de nieuwste Azure PowerShell-module en de Bicep CLI, zoals beschreven in het artikel.

De sjabloon controleren

Met deze sjabloon kunt u back-ups configureren voor een Azure PostgreSQL - Flexibele server. In deze sjabloon maken we een back-upkluis met een back-upbeleid voor de PostgreSQL-server met een wekelijks schema en een retentieduur van drie maanden .

@description('Specifies the name of the Backup Vault')
param backupVaultName string

@description('Specifies the name of the Resource group to which Backup Vault belongs')
param backupVaultResourceGroup string

@description('Specifies the name of the PostgreSQL server')
param postgreSQLServerName string

@description('Specifies the name of the Resource group to which PostgreSQL server belongs')
param postgreSQLResourceGroup string

@description('Specifies the region in which the Backup Vault is located')
param region string

@description('Specifies the name of the Backup Policy')
param policyName string

@description('Specifies the frequency of the backup schedule')
param backupScheduleFrequency string

@description('Specifies the retention duration in months')
param retentionDuration string

@description('Step 1: Create the Backup Vault')
resource backupVault 'Microsoft.DataProtection/backupVaults@2023-01-01' = {
  name: backupVaultName
  location: region
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    storageSettings: [
      {
        datastoreType: 'VaultStore'
        type: 'LocallyRedundant'
      }
    ]
  }
}

@description('Step 2: Create Backup Policy for PostgreSQL')
resource backupPolicy 'Microsoft.DataProtection/backupVaults/backupPolicies@2023-01-01' = {
  name: '${backupVaultName}/${policyName}'
  location: region
  properties: {
    datasourceTypes: [
      'AzureDatabaseForPostgreSQLFlexibleServer'
    ]
    policyRules: [
      {
        name: 'BackupSchedule'
        objectType: 'AzureBackupRule'
        backupParameters: {
          objectType: 'AzureBackupParams'
        }
        trigger: {
          schedule: {
            recurrenceRule: {
              frequency: 'Weekly'
              interval: backupScheduleFrequency
            }
          }
        }
        dataStore: {
          datastoreType: 'VaultStore'
        }
      }
      {
        name: 'RetentionRule'
        objectType: 'AzureRetentionRule'
        isDefault: true
        lifecycle: {
          deleteAfter: {
            objectType: 'AbsoluteDeleteOption'
            duration: 'P${retentionDuration}M'
          }
        }
      }
    ]
  }
}

@description('Step 3: Role Assignment for PostgreSQL Backup And Export Operator Role')
resource postgreSQLServer 'Microsoft.DBforPostgreSQL/flexibleServers@2022-03-01' existing = {
  name: postgreSQLServerName
  scope: resourceGroup(postgreSQLResourceGroup)
}

resource roleAssignmentBackupExportOperator 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(backupVault.id, 'PostgreSQLFlexibleServerLongTermRetentionBackupRole')
  properties: {
    principalId: backupVault.identity.principalId
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e')  // Role definition ID for 'PostgreSQL Backup And Export Operator'
    scope: postgreSQLServer.id
  }
}

@description('Step 4: Role Assignment for Reader on Resource Group')
resource targetResourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' existing = {
  name: targetResourceGroupName
}

resource roleAssignmentReader 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(backupVault.id, 'Reader')
  properties: {
    principalId: backupVault.identity.principalId
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '00aa00aa-bb11-cc22-dd33-44ee44ee44ee')  // Role definition ID for 'Reader'
    scope: targetResourceGroup.id
  }
}

@description('Step 5: Create Backup Instance for PostgreSQL')
resource backupInstance 'Microsoft.DataProtection/backupVaults/backupInstances@2023-01-01' = {
  name: 'PostgreSQLBackupInstance'
  location: region
  properties: {
    datasourceInfo: {
      datasourceType: 'AzureDatabaseForPostgreSQLFlexibleServer'
      objectType: 'Datasource'
      resourceId: postgreSQLServer.id
    }
    policyInfo: {
      policyId: backupPolicy.id
    }
  }
}

De sjabloon implementeren

Als u deze sjabloon wilt implementeren, slaat u deze op in GitHub of de gewenste locatie en plakt u vervolgens het volgende PowerShell-script in het shell-venster. Als u de code wilt plakken, klikt u met de rechtermuisknop op het shell-venster en selecteert u Plakken.

$projectName = Read-Host -Prompt "Enter a project name (limited to eight characters) that is used to generate Azure resource names"
$location = Read-Host -Prompt "Enter the location (for example, centralus)"

$resourceGroupName = "${projectName}rg"
$templateUri = "templateURI"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -projectName $projectName 

Volgende stappen

Azure Database for PostgreSQL - Flexibele server herstellen met behulp van Azure PowerShell.