Udostępnij za pomocą


Szybkie rozpoczęcie: konfigurowanie kopii zapasowej dla usługi Azure Database for PostgreSQL — elastyczne serwery z plikiem Bicep

W tym przewodniku szybkiego startu opisano sposób konfigurowania kopii zapasowej usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu pliku Azure Bicep.

Usługa Azure Backup umożliwia tworzenie kopii zapasowych elastycznych serwerów Azure PostgreSQL przy użyciu wielu klientów, takich jak portal Azure, PowerShell, interfejs wiersza polecenia, Azure Resource Manager, Bicep itd. Ten artykuł koncentruje się na procesie wdrażania pliku Bicep w celu utworzenia magazynu kopii zapasowych, a następnie skonfigurowania kopii zapasowej dla usługi Azure PostgreSQL — serwer elastyczny. Dowiedz się więcej o tworzeniu plików Bicep.

Bicep to język deklaratywnego wdrażania zasobów platformy Azure. Możesz użyć Bicep zamiast JSON do tworzenia szablonów usługi Azure Resource Manager (szablonów usługi ARM). Składnia Bicep zmniejsza złożoność i poprawia doświadczenie deweloperskie. Bicep to przezroczysta abstrakcja nad szablonami JSON ARM, która oferuje wszystkie ich możliwości. Podczas wdrażania narzędzie wiersza polecenia Bicep konwertuje plik Bicep na szablon JSON ARM. Plik Bicep zawiera zasoby i właściwości zasobów platformy Azure bez konieczności pisania sekwencji poleceń programowania w celu utworzenia zasobów.

Typy zasobów, wersje interfejsu API i właściwości, które są prawidłowe w szablonie ARM, są również prawidłowe w pliku Bicep.

Wymagania wstępne

Aby skonfigurować środowisko na potrzeby programowania aplikacji Bicep, zobacz Instalowanie narzędzi Bicep.

Uwaga

Zainstaluj najnowszy moduł programu Azure PowerShell i interfejs wiersza polecenia Bicep zgodnie z opisem w artykule.

Przegląd szablonu

Ten szablon umożliwia skonfigurowanie kopii zapasowej dla serwera elastycznego usługi Azure PostgreSQL. W tym szablonie utworzymy magazyn kopii zapasowych z zasadami tworzenia kopii zapasowych dla serwera PostgreSQL z cotygodniowym harmonogramem i okresem przechowywania trzech miesięcy .

@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
    }
  }
}

Wdrażanie szablonu

Aby zastosować ten szablon, zapisz go w usłudze GitHub lub innej preferowanej lokalizacji, a następnie wklej poniższy skrypt PowerShell do okna konsoli. Aby wkleić kod, kliknij prawym przyciskiem myszy okno konsoli, a następnie wybierz polecenie Wklej.

$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 

Następne kroki

Przywracanie usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu programu Azure PowerShell.