Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Backup do Azure permite fazer backup de Servidores Flexíveis do PostgreSQL do Azure usando várias opções, como portal do Azure, PowerShell, CLI, Azure Resource Manager, Bicep e assim por diante. Este artigo descreve como fazer backup de um Servidores Flexíveis do PostgreSQL do Azure com um modelo do Azure Resource Manager e o Azure PowerShell. Este início rápido se concentra no processo de implantação de um modelo do ARM (Azure Resource Manager) para criar um cofre de Backup e, em seguida, configurar o backup para o Servidor Flexível do PostgreSQL do Azure. Para obter mais informações sobre como desenvolver modelos do ARM, confira a documentação do Azure Resource Manager
Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Pré-requisitos
Para configurar seu ambiente para o desenvolvimento do Bicep, confira Instalar ferramentas do Bicep.
Observação
Instale o módulo Azure PowerShell mais recente e a CLI do Bicep conforme detalhado no artigo.
Examinar o modelo
Esse modelo permite que você configure o backup para um Servidor Flexível do PostgreSQL do Azure. Neste modelo, criamos um cofre de backup com uma política de backup para o servidor PostgreSQL com uma agenda semanal e uma duração de retenção de rês meses.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"backupVaultName": {
"type": "string"
},
"backupVaultResourceGroup": {
"type": "string"
},
"postgreSQLServerName": {
"type": "string"
},
"postgreSQLResourceGroup": {
"type": "string"
},
"region": {
"type": "string"
},
"policyName": {
"type": "string"
},
"backupScheduleFrequency": {
"type": "string"
},
"retentionDurationInMonths": {
"type": "int"
},
"targetResourceGroupName": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.DataProtection/backupVaults",
"apiVersion": "2023-01-01",
"name": "[parameters('backupVaultName')]",
"location": "[parameters('region')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
}
},
{
"type": "Microsoft.DataProtection/backupVaults/backupPolicies",
"apiVersion": "2023-01-01",
"name": "[concat(parameters('backupVaultName'), '/', parameters('policyName'))]",
"location": "[parameters('region')]",
"properties": {
"datasourceTypes": [
"AzureDatabaseForPostgreSQLFlexibleServer"
],
"policyRules": [
{
"name": "BackupSchedule",
"objectType": "AzureBackupRule",
"backupParameters": {
"objectType": "AzureBackupParams"
},
"trigger": {
"schedule": {
"recurrenceRule": {
"frequency": "Hourly",
"interval": "[parameters('backupScheduleFrequency')]"
}
}
},
"dataStore": {
"datastoreType": "VaultStore"
}
},
{
"name": "RetentionRule",
"objectType": "AzureRetentionRule",
"isDefault": true,
"lifecycle": {
"deleteAfter": {
"objectType": "AbsoluteDeleteOption",
"duration": "[concat('P', parameters('retentionDurationInMonths'), 'M')]"
}
}
}
]
}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[guid(subscription().id, 'PostgreSQLFlexibleServerLongTermRetentionBackupRole
')]",
"properties": {
"principalId": "[reference(concat(resourceId(parameters('backupVaultResourceGroup'), 'Microsoft.DataProtection/backupVaults', parameters('backupVaultName')), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2020-12-01').principalId]",
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e')]",
"scope": "[resourceId(parameters('postgreSQLResourceGroup'), 'Microsoft.DBforPostgreSQL/flexibleServers', parameters('postgreSQLServerName'))]"
}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[guid(subscription().id, 'Reader')]",
"properties": {
"principalId": "[reference(concat(resourceId(parameters('backupVaultResourceGroup'), 'Microsoft.DataProtection/backupVaults', parameters('backupVaultName')), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2020-12-01').principalId]",
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e')]",
"scope": "[resourceId(parameters('targetResourceGroupName'))]"
}
},
{
"type": "Microsoft.DataProtection/backupVaults/backupInstances",
"apiVersion": "2023-01-01",
"name": "PostgreSQLBackupInstance",
"location": "[parameters('region')]",
"properties": {
"datasourceInfo": {
"datasourceType": "AzureDatabaseForPostgreSQLFlexibleServer",
"objectType": "Datasource",
"resourceId": "[resourceId(parameters('postgreSQLResourceGroup'), 'Microsoft.DBforPostgreSQL/flexibleServers', parameters('postgreSQLServerName'))]"
},
"policyInfo": {
"policyId": "[resourceId(parameters('backupVaultResourceGroup'), 'Microsoft.DataProtection/backupVaults/backupPolicies', parameters('backupVaultName'), parameters('policyName'))]"
}
}
}
]
}
Implantar o modelo
Para implantar o modelo, armazene o modelo em um repositório do GitHub e cole o script do PowerShell a seguir na janela do shell.
$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 = "https//templateuri"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -projectName