Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure PowerShell kullanarak PostgreSQL için Azure Veritabanı'nı yedekleme işlemi açıklanmaktadır. PostgreSQL veritabanları için Azure portalı, Azure CLI ve REST API kullanarak da yedeklemeyi yapılandırabilirsiniz.
Desteklenen senaryolar ve PostgreSQL için Azure Veritabanı'nda PostgreSQL veritabanlarını yedeklemeye yönelik sık sorulan sorular hakkında daha fazla bilgi edinin.
Backup kasası oluşturma
Backup kasası, Azure'daki bir depolama varlığıdır. PostgreSQL için Azure Veritabanı sunucuları, Azure diskleri ve Azure blobları gibi Azure Backup'ın desteklediği çeşitli yeni iş yükleri için yedekleme verilerini depolar. Yedekleme kasaları, yedekleme verilerinizi düzenlemeye yardımcı olurken yönetim ek yükünü en aza indirir. Yedekleme kasaları, yedekleme verilerinin güvenliğini sağlamaya yardımcı olmak için gelişmiş özellikler sağlayan Azure Resource Manager modelini temel alır.
Backup kasası oluşturmadan önce kasadaki verilerin depolama yedekliliğini seçin. Ardından bu depolama yedekliliği ve konumuyla Backup kasasını oluşturmaya devam edin.
Bu makalede, TestBkpVault
bölgesinde, kaynak grubunun westus
altında, testBkpVaultRG
adlı bir Backup kasası oluşturacaksınız. Backup kasası oluşturmak için New-AzDataProtectionBackupVault
komutunu kullanın.
Backup kasası oluşturma hakkında daha fazla bilgi edinin.
$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/xxxxxxxx-xxxx-xxxx-xxxx/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
Yedekleme ilkesi oluşturma
Kasa oluşturduktan sonra PostgreSQL veritabanlarının korunmasına yardımcı olmak için bir yedekleme ilkesi oluşturabilirsiniz. REST API kullanarak PostgreSQL veritabanları için bir yedekleme ilkesi de oluşturabilirsiniz.
PostgreSQL yedekleme ilkesini anlama
Disk yedekleme günde birden çok yedekleme sunarken ve blob yedekleme tetikleyicisi olmayan sürekli bir yedekleme olsa da PostgreSQL yedeklemesi arşiv koruması sunar. Kasaya ilk gönderilen yedekleme verileri, tanımlı bir kurala veya yaşam döngüsüne uygun olarak arşiv katmanına taşınabilir.
Bu bağlamda, aşağıdaki hiyerarşi PostgreSQL için yedekleme ilkesi nesnesini anlamanıza yardımcı olabilir:
- İlke kuralı
- Yedekleme kuralı
- Yedekleme parametresi
- Yedekleme türü (bu örnekte tam veritabanı yedeklemesi)
- İlk veri deposu (yedeklemelerin başlangıçta geldiği yer)
- Tetikleyici (yedeklemenin tetikleme şekli)
- Takvim
- Varsayılan etiketleme ölçütleri (tüm zamanlanmış yedeklemeleri bekletme kuralına bağlayan varsayılan etiket)
- Yedekleme parametresi
- Varsayılan bekletme kuralı (varsayılan olarak ilk veri deposundaki tüm yedeklemelere uygulanan bir kural)
- Yedekleme kuralı
İlke nesnesi ne tür yedeklemelerin tetiklendiklerini, bunların nasıl tetiklendiklerini (bir zamanlama aracılığıyla), nelerle etiketlendiklerini, nereye indiklerini (veri deposu) ve veri deposundaki verilerinin yaşam döngüsünü tanımlar.
PostgreSQL için varsayılan PowerShell nesnesi her hafta tam yedekleme tetikle diyor. Yedeklemeler kasaya ulaşır ve burada üç ay boyunca depolanır.
Arşiv katmanını ilkeye eklemek istiyorsanız, verilerin kasadan arşive ne zaman taşınacağını, verilerin arşivde ne kadar süreyle kalacağına ve zamanlanmış yedeklemelerden hangisinin arşivlenebilir olarak etiketlenmesi gerektiğine karar vermeniz gerekir. Kasa veri deposundan arşiv veri deposuna yedekleme verilerinin yaşam döngüsünü tanımlayan bir bekletme kuralı eklemeniz gerekir. Bekletme kuralı, yedekleme verilerinin arşiv veri deposunda ne kadar süre kalacağını da tanımlar. Ardından zamanlanmış yedeklemeleri arşivlenebilir olarak işaretleyen bir etiket eklemeniz gerekir.
Sonuçta elde edilen PowerShell nesnesi aşağıdaki gibidir:
- İlke kuralı
- Yedekleme kuralı
- Yedekleme parametresi
- Yedekleme türü (bu örnekte tam veritabanı yedeklemesi)
- İlk veri deposu (yedeklemelerin başlangıçta geldiği yer)
- Tetikleyici (yedeklemenin tetikleme şekli)
- Takvim
- Varsayılan etiketleme ölçütleri (zamanlanmış tüm yedeklemeleri bekletme kuralına bağlayan varsayılan etiket)
- Aynı ada sahip yeni saklama kuralı için yeni etiketleme kriterleri
- Yedekleme parametresi
- Varsayılan bekletme kuralı (varsayılan olarak ilk veri deposundaki tüm yedeklemelere uygulanan bir kural)
- Yeni bekletme kuralı
- Yaşam çevrimi
- Kaynak veri deposu
- Kaynak veri deposunda silinme süresi
- Hedef veri deposuna kopyalama
- Yaşam çevrimi
- Yedekleme kuralı
İlke şablonunu alma
PostgreSQL veritabanı yedeklemesi için yedekleme ilkesinin iç bileşenlerini anlamak için komutunu kullanarak Get-AzDataProtectionPolicyTemplate
ilke şablonunu alın. Bu komut, bir veri kaynağı türü için varsayılan ilke şablonunu döndürür. Yeni bir ilke oluşturmak için bu ilke şablonunu kullanın.
$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPostgreSQL
$policyDefn | fl
DatasourceType : {Microsoft.DBforPostgreSQL/servers/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
İlke şablonu bir tetikleyiciden (yedeklemeyi neyin tetiklediğine karar veren) ve bir yaşam döngüsünden (yedeklemenin ne zaman silineceğine, kopyalandığına veya taşıneceğine karar verir) oluşur. PostgreSQL veritabanı yedeklemesinde, tetikleyici için varsayılan değer zamanlanmış haftalık tetikleyicidir (yedi günde bir yedekleme). Her yedekleme üç ay boyunca saklanır.
$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 : {}
İlke şablonunu değiştirme
Zamanlamayı değiştirme
Varsayılan ilke şablonu haftada bir yedekleme sunar. Yedekleme zamanlamasını haftada birden çok gün olacak şekilde değiştirebilirsiniz. Zamanlamayı değiştirmek için komutunu kullanın Edit-AzDataProtectionPolicyTriggerClientObject
.
Aşağıdaki örnek, haftalık yedeklemeyi her haftanın Pazar, Çarşamba ve Cuma günleri olarak değiştirir. Zamanlama tarihi dizisi tarihlerden bahseder ve bu tarihler için haftanın günleri haftanın günleri olarak alınır. Ayrıca bu zamanlamaların her hafta yineleneceğini belirtmeniz gerekir. Bu nedenle, zamanlama aralığı 1
ve aralık türü Weekly
.
$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
Yeni bekletme kuralı ekleme
Arşiv koruması eklemek istiyorsanız ilke şablonunu değiştirmeniz gerekir.
Varsayılan şablon, varsayılan saklama kuralı altında ilk veri deposu için bir yaşam döngüsüne sahiptir. Bu senaryoda kural, yedekleme verilerinin üç ay sonra silinmesini söyler. Verilerin arşiv veri deposuna ne zaman taşındığını tanımlayan yeni bir bekletme kuralı eklemelisiniz. Başka bir ifadeyle yedekleme verileri önce arşiv veri deposuna kopyalanır ve ardından kasa veri deposunda silinir.
Ayrıca kural, verilerin arşiv veri deposunda ne kadar süre tutulacaklarını tanımlamalıdır. Yeni yaşam döngüleri oluşturmak için komutunu kullanın New-AzDataProtectionRetentionLifeCycleClientObject
. Bu yaşam döngülerini yeni veya mevcut kurallarla ilişkilendirmek Edit-AzDataProtectionPolicyRetentionRuleClientObject
için komutunu kullanın.
Aşağıdaki örnek adlı Monthly
yeni bir bekletme kuralı oluşturur. Bu kuralda, her ayın ilk başarılı yedeklemesi altı ay boyunca kasada tutulur, arşiv katmanına taşınır ve 24 ay boyunca arşiv katmanında tutulur.
$VaultToArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6 -TargetDataStore ArchiveStore -CopyOption CopyOnExpiryOption
$OnArchiveLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore ArchiveStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 24
Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultToArchiveLifeCycle, $OnArchiveLifeCycleLifeCycle -IsDefault $false
Etiket ve ilgili ölçütleri ekleme
Bekletme kuralı oluşturduktan sonra, yedekleme ilkesinin Trigger
özelliğinde karşılık gelen bir etiket oluşturmanız gerekir. Yeni etiketleme ölçütleri oluşturmak için komutunu kullanın New-AzDataProtectionPolicyTagCriteriaClientObject
. Mevcut etiketi güncelleştirmek veya yeni bir etiket oluşturmak için Edit-AzDataProtectionPolicyTagClientObject komutunu kullanın.
Aşağıdaki örnek, ayın ilk başarılı yedeklemesi olan ölçütle birlikte yeni bir etiket oluşturur. Etiket, uygulanacak ilgili bekletme kuralıyla aynı adı taşır.
Bu örnekte, etiket ölçütleri olarak adlandırılır Monthly
:
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
Zamanlama haftada birden çok yedeklemeyse (önceki örnekte belirtildiği gibi her Pazar, Çarşamba ve Perşembe) ve Pazar ve Cuma yedeklemelerini arşivleme istiyorsanız, etiketleme ölçütlerini aşağıdaki gibi değiştirebilirsiniz:
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
Yeni bir PostgreSQL yedekleme ilkesi oluşturma
Şablonu gereksinimlere göre değiştirdikten sonra, değiştirilen şablonu kullanarak bir ilke oluşturmak için komutunu kullanın New-AzDataProtectionBackupPolicy
:
$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn
Yedeklemeyi yapılandırma
Kasayı ve ilkeyi oluşturduktan sonra PostgreSQL için Azure Veritabanı'nda PostgreSQL veritabanını yedeklemek için üç kritik noktayı göz önünde bulundurmanız gerekir.
Anahtar varlıkları anlama
Yedeklenecek PostgreSQL veritabanı
Yedeklenecek PostgreSQL veritabanının Resource Manager kimliğini getirin. Bu kimlik, veritabanının tanımlayıcısı olarak görev alır. Aşağıdaki örnek, farklı bir abonelik altındaki kaynak grubunda empdb11
bulunan PostgreSQL sunucusu testposgresql
altında adlı ossrg
bir veritabanı kullanır:
$ossId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Güvenli Anahtar Havuzu
Azure Backup hizmeti PostgreSQL veritabanına bağlanmak için kullanıcı adını ve parolayı depolamaz. Bunun yerine, yedekleme yöneticisi anahtarları anahtar kasasına yerleştirir. Azure Backup hizmeti daha sonra anahtar kasasına erişir, anahtarları okur ve veritabanına erişir. İlgili anahtarın gizli kimliğini not edin.
$keyURI = "https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Yedekleme kasası
Backup kasasını PostgreSQL sunucusuna bağlamanız ve ardından anahtar kasasında bulunan anahtarlar aracılığıyla veritabanına erişmeniz gerekir. Bu nedenle Backup kasası postgreSQL sunucusuna ve anahtar kasasına erişim gerektirir. Yedekleme kasasının yönetilen kimliğine erişim sağlanır.
Veritabanının anahtarlarının depolandığı PostgreSQL sunucusunda ve Azure Key Vault'ta Backup kasasının yönetilen kimliğine vermeniz gereken uygun izinleri okuyun.
İsteği hazırlama
Tüm ilgili izinleri ayarladıktan sonra yedeklemenin yapılandırmasını iki adımda gerçekleştirin:
- komutundaki ilgili kasayı, ilkeyi ve PostgreSQL veritabanını
Initialize-AzDataProtectionBackupInstance
kullanarak isteği hazırlayın. - komutunu kullanarak
New-AzDataProtectionBackupInstance
veritabanını yedekleme isteğini gönderin.
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQL -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId -SecretStoreURI $keyURI -SecretStoreType AzureKeyVault
ConvertTo-Json -InputObject $instance -Depth 4
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance
Name Type BackupInstanceName
---- ---- ------------------
ossrg-empdb11 Microsoft.DataProtection/backupVaults/backupInstances ossrg-empdb11
İsteğe bağlı yedekleme çalıştırma
İlgili yedekleme örneğini, yedekleme tetiklemeniz gereken Get-AzDataProtectionBackupInstance
komutunu kullanarak alın.
$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
Yedekleme tetiklerken bir bekletme kuralı belirtebilirsiniz. İlkedeki bekletme kurallarını görüntülemek için ilke nesnesine göz atın. Aşağıdaki örnekte, adıyla Default
kural görüntülenir. Bu makalede, isteğe bağlı yedekleme için bu örnek kural kullanılır.
$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
İsteğe bağlı yedekleme tetikleme için komutunu Backup-AzDataProtectionBackupInstanceAdhoc
kullanın:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
İş Takibi
Get-AzDataProtectionJob
komutunu kullanarak tüm işleri izleyin. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.
Tüm Backup kasalarındaki tüm işleri izlemek için Az.ResourceGraph
'u da kullanabilirsiniz. Herhangi bir Backup kasasında Search-AzDataProtectionJobInAzGraph
ilgili işleri getirmek için komutunu kullanın:
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup
İlgili içerik
- Azure PowerShell kullanarak PostgreSQL veritabanını geri yükleyin.
- Azure portalını, Azure CLI'yı ve REST API'yi kullanarak PostgreSQL veritabanını geri yükleyin.