Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
La Sauvegarde Azure vous permet de sauvegarder vos serveurs flexibles Azure PostgreSQL en utilisant plusieurs options telles que le Portail Azure, PowerShell, CLI, Azure Resource Manager, Bicep, etc. Cet article explique comment sauvegarder des serveurs flexibles Azure PostgreSQL avec un modèle Azure Resource Manager et Azure PowerShell. Ce guide de démarrage rapide se concentre sur le processus de déploiement d’un modèle Azure Resource Manager (ARM) pour créer un coffre de sauvegarde, puis configurer la sauvegarde pour le serveur Flexible Azure PostgreSQL. Pour plus d’informations sur le développement de modèles ARM, consultez la documentation Azure Resource Manager
Un modèle Azure Resource Manager est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez votre déploiement prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
Prérequis
Pour configurer votre environnement pour le développement Bicep, consultez Installer les outils bicep.
Notes
Installez le dernier module Azure PowerShell et l’interface CLI de Bicep, comme décrit dans cet article.
Vérifier le modèle
Ce modèle vous permet de configurer la sauvegarde d’une instance Azure PostgreSQL – Serveur flexible. Dans ce modèle, nous créons un coffre de sauvegarde avec une stratégie de sauvegarde pour le serveur PostgreSQL avec une planification hebdomadaire et une durée de rétention de trois mois.
{
"$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'))]"
}
}
}
]
}
Déployer le modèle
Pour déployer le modèle, stockez-le dans un référentiel GitHub, puis collez le script PowerShell suivant dans la fenêtre de l’interpréteur de commandes.
$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