이 문서에서는 Azure PowerShell을 사용하여 Azure PostgreSQL 데이터베이스를 백업하는 방법을 설명합니다.
이 문서에서는 다음 방법을 설명합니다.
Backup 자격 증명 모음 만들기
백업 정책 만들기
Azure Database for PostgreSQL - 유연한 서버의 백업 구성
주문형 백업 작업 실행
Azure Database for PostgreSQL - 유연한 서버 지원 시나리오 및 제한 사항에 대한 자세한 내용은 지원 매트릭스를 참조하세요.
Backup 자격 증명 모음 만들기
Backup 자격 증명 모음은 Azure의 스토리지 엔터티입니다. Azure Backup이 지원하는 새 워크로드에 대한 백업 데이터를 저장합니다. 예를 들어 Azure Database for PostgreSQL – 유연한 서버, 스토리지 계정의 Blob 및 Azure Disks입니다. 백업 자격 증명 모음은 관리 오버헤드를 최소화하면서 백업 데이터를 구성하는 데 도움이 됩니다. Backup 자격 증명 모음은 Azure의 Azure Resource Manager 모델을 기반으로 하며 백업 데이터를 보호할 수 있도록 하는 향상된 기능을 제공합니다.
Backup 자격 증명 모음을 만들기 전에 자격 증명 모음 내에서 데이터의 스토리지 중복도를 선택합니다. 그런 다음, 해당 스토리지 중복도 및 위치를 사용하여 Backup 자격 증명 모음을 만듭니다.
이 문서에서는 리소스 그룹 testBkpVaultRG 아래에 westus 지역에 Backup 자격 증명 모음 TestBkpVault를 만듭니다. New-AzDataProtectionBackupVault 명령을 사용하여 백업 자격 증명 모음을 만들 수 있습니다. 백업 자격 증명 모음 만들기에 대해 자세히 알아보세요.
$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag :
Id : /subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId :
IdentityType :
Location : westus
Name : TestBkpVault
ProvisioningState : Succeeded
StorageSetting : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type : Microsoft.DataProtection/backupVaults
자격 증명 모음을 만든 후 Azure PostgreSQL – 유연한 서버 데이터베이스를 보호하는 Backup 정책을 만들어 보겠습니다.
백업 정책 만들기
PostgreSQL 이해 – 유연한 서버 백업 정책
PostgreSQL – 유연한 서버에 대한 백업 정책 개체를 이해해 보겠습니다.
- PolicyRule
- BackupRule
- BackupParameter
- BackupType(이 경우 전체 서버 백업)
- 초기 데이터 저장소(백업이 처음에 도착하는 위치)
- 트리거(백업이 트리거되는 방법)
- 일정 기반
- 기본 태그 지정 기준(예약된 모든 백업에 대한 기본 '태그'. 이 태그는 백업을 보관 규칙에 연결함)
- BackupParameter
- 기본 보존 규칙(초기 데이터 저장소에서 기본적으로 모든 백업에 적용되는 규칙)
- BackupRule
따라서 이 개체는 트리거되는 백업 유형, 트리거되는 방법(일정을 통해), 태그 지정 방법, 랜딩 위치(데이터 저장소), 데이터 저장소에 있는 백업 데이터의 수명 주기를 정의합니다. PostgreSQL – 유연한 서버의 기본 개체는 매주 전체 백업을 트리거하고 자격 증명 모음에 도달하여 3개월 동안 저장됩니다.
정책 템플릿 검색
Azure PostgreSQL – 유연한 서버 데이터베이스 백업에 대한 백업 정책의 내부 구성 요소를 이해하려면 Get-AzDataProtectionPolicyTemplate 명령을 사용하여 정책 템플릿을 검색합니다. 이 명령은 지정된 데이터 원본 형식에 관한 기본 정책 템플릿을 반환합니다. 이 정책 템플릿을 사용하여 새 정책을 만듭니다.
$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPGFlexServer
$policyDefn | fl
DatasourceType : {Microsoft.DBforPostgreSQL/flexibleServers/databases}
ObjectType : BackupPolicy
PolicyRule : {BackupWeekly, Default}
$policyDefn.PolicyRule | fl
BackupParameter : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType : DataStoreInfoBase
DataStoreType : VaultStore
Name : BackupWeekly
ObjectType : AzureBackupRule
Trigger : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.ScheduleBasedTriggerCo
ntext
TriggerObjectType : ScheduleBasedTriggerContext
IsDefault : True
Lifecycle : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.SourceLifeCycle}
Name : Default
ObjectType : AzureRetentionRule
정책 템플릿은 트리거(백업을 트리거하는 항목 결정)와 수명 주기(백업을 삭제/복사/이동할 시기 결정)로 구성됩니다. Azure PostgreSQL – 유연한 서버 데이터베이스 백업에서 트리거의 기본값은 예약된 주간 트리거(7일마다 하나의 백업)이며 3개월 동안 각 백업을 유지합니다.
$policyDefn.PolicyRule[0].Trigger | fl
ObjectType : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2021-08-22T02:00:00+00:00/P1W}
ScheduleTimeZone : UTC
TaggingCriterion : {Default}
$policyDefn.PolicyRule[1].Lifecycle | fl
DeleteAfterDuration : P3M
DeleteAfterObjectType : AbsoluteDeleteOption
SourceDataStoreObjectType : DataStoreInfoBase
SourceDataStoreType : VaultStore
TargetDataStoreCopySetting : {}
정책 템플릿 수정
일정 수정
기본 정책 템플릿은 일주일에 한 번 백업을 제공합니다. 백업이 일주일에 여러 번 발생하도록 일정을 수정할 수 있습니다. 일정을 변경하려면 Edit-AzDataProtectionPolicyTriggerClientObject 명령을 사용합니다.
다음 예제에서는 백업이 매주 일요일, 수요일 및 금요일에 수행되도록 매주 백업을 수정합니다. 일정 날짜 배열은 날짜를 언급하고 해당 날짜의 요일이 요일로 간주됩니다. 또한 이러한 일정이 매주 반복되도록 지정해야 합니다. 따라서 일정 간격은 "1"이고 간격 유형은 "매주"입니다.
$schDates = @(
(
(Get-Date -Year 2021 -Month 08 -Day 15 -Hour 22 -Minute 0 -Second 0)
),
(
(Get-Date -Year 2021 -Month 08 -Day 18 -Hour 22 -Minute 0 -Second 0)
),
(
(Get-Date -Year 2021 -Month 08 -Day 20 -Hour 22 -Minute 0 -Second 0)
)
)
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $policyDefn
새 보관 규칙 추가
기본 템플릿에는 기본 보존 규칙에 따라 초기 데이터 저장소에 대한 수명 주기가 있습니다. 이 시나리오에서 규칙은 3개월 후에 백업 데이터를 삭제하도록 말합니다. New-AzDataProtectionRetentionLifeCycleClientObject 명령을 사용하여 새 수명 주기를 만들고 Edit-AzDataProtectionPolicyRetentionRuleClientObject 명령을 사용하여 새 규칙 또는 기존 규칙과 연결합니다.
다음 예제에서는 매월 첫 번째 성공적인 백업을 6개월 동안 자격 증명 모음에 보존해야 하는 Monthly라는 새 보존 규칙을 만듭니다.
$VaultLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6
Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultLifeCycle -IsDefault $false
태그 및 관련 조건 추가
보관 규칙이 만들어지면 백업 정책의 트리거 속성에 해당하는 태그를 만들어야 합니다. New-AzDataProtectionPolicyTagCriteriaClientObject 명령을 사용하여 새 태그 지정 조건을 만들고 Edit-AzDataProtectionPolicyTagClientObject 명령을 사용하여 기존 태그를 업데이트하거나 새 태그를 만듭니다.
다음 예에서는 적용할 해당 보관 규칙과 이름이 같은 기준(이달의 첫 번째 성공적인 백업)과 함께 새 태그를 만듭니다.
이 예제에서는 태그 조건의 이름은 매월로 지정해야 합니다.
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
일정이 매주 여러 백업(예에 지정된 대로 매주 일요일, 수요일, 목요일)이고 일요일 및 금요일 백업을 보관하려는 경우 태그 지정 조건을 다음과 같이 변경할 수 있습니다.
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
새 PostgreSQL - 유연한 서버 백업 정책 만들기
템플릿이 요구 사항에 따라 수정되면 New-AzDataProtectionBackupPolicy 명령을 사용하여 수정된 템플릿을 사용하여 정책을 만듭니다.
$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn
백업 구성
자격 증명 모음 및 정책이 만들어지면 Azure PostgreSQL 데이터베이스를 보호하기 위해 고려해야 할 세 가지 중요한 사항이 있습니다.
관련된 주요 엔터티
PostgreSQL - 보호할 유연한 서버
보호할 유연한 서버인 PostgreSQL의 Azure Resource Manager ID(Azure Resource Manager ID)를 가져옵니다. 이 ID는 데이터베이스 서버의 식별자 역할을 합니다. 다른 구독의 리소스 그룹 ossrg에 있는 PostgreSQL - 유연한 서버 testpgflex의 예를 사용합니다.
$ossId = "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpgflex
#### Backup vault
You need to connect the Backup vault to the PostgreSQL - flexbile server. Access is granted to the Backup vault's MSI.
See the [permissions] (/backup-azure-database-postgresql-flex-overview.md#permissions-for-backup) you should grant to the Managed System Identity (MSI) of the Backup Vault on the PostgreSQL - flexible server.
### Prepare the request
Once all the relevant permissions are set, the configuration of the backup is performed in two steps.
1. We prepare the relevant request by using the relevant vault, policy, PostgreSQL - flexible server using the [Initialize-AzDataProtectionBackupInstance](/powershell/module/az.dataprotection/initialize-azdataprotectionbackupinstance) command.
1. We submit the request to protect the database server using the [New-AzDataProtectionBackupInstance](/powershell/module/az.dataprotection/new-azdataprotectionbackupinstance) command.
```azurepowershell
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQLFlexibleServer -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId ConvertTo-Json -InputObject $instance -Depth 4
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance
Name Type BackupInstanceName
---- ---- ------------------
ossrg-testpgflex Microsoft.DataProtection/backupVaults/backupInstances ossrg-testpgflex
주문형 백업 실행
사용자가 Get-AzDataProtectionBackupInstance 명령을 사용하여 백업을 트리거하는 데 필요한 관련 백업 인스턴스를 가져옵니다.
$instance = Get-AzDataProtectionBackupInstance -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -ResourceGroupName testBkpVaultRG -VaultName $TestBkpVault.Name -Name BackupInstanceName
백업을 트리거하는 동안 보존 규칙을 지정할 수 있습니다. 정책에서 보존 규칙을 보려면 보존 규칙의 정책 개체를 검색합니다. 다음 예제에서는 이름이 default인 규칙이 표시됩니다. 주문형 백업에 해당 규칙을 사용합니다.
$ossPol.PolicyRule | fl
BackupParameter : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType : DataStoreInfoBase
DataStoreType : OperationalStore
Name : BackupHourly
ObjectType : AzureBackupRule
Trigger : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType : ScheduleBasedTriggerContext
IsDefault : True
Lifecycle : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name : Default
ObjectType : AzureRetentionRule
주문형 백업을 트리거하려면 Backup-AzDataProtectionBackupInstanceAdhoc 명령을 사용합니다.
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
작업 추적
Get-AzDataProtectionJob 명령을 사용하여 모든 작업을 추적합니다. 모든 작업을 나열하고 특정 작업 세부 정보를 가져올 수 있습니다.
Az.ResourceGraph를 사용하여 모든 백업 자격 증명 모음에서 모든 작업을 추적할 수도 있습니다. Search-AzDataProtectionJobInAzGraph 명령을 사용하여 모든 백업 자격 증명 모음에서 관련 작업을 가져옵니다.
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -Operation OnDemandBackup