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 CLI kullanarak Azure Sanal Makineler'deki PostgreSQL veritabanlarının nasıl yedeklediği açıklanır. PostgreSQL veritabanları için Azure portalı, Azure PowerShell ve REST API kullanarak da yedeklemeyi yapılandırabilirsiniz.
Desteklenen senaryolar ve PostgreSQL için Azure Veritabanı'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ı, depolama hesabındaki bloblar ve Azure diskleri gibi Azure Backup'ın desteklediği 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
adlı kaynak grubunun altında, westus
bölgesinde, testBkpVaultRG
adında bir Backup kasası oluşturacaksınız. Backup kasası oluşturmak için az dataprotection vault create
komutunu kullanın.
Backup kasası oluşturma hakkında daha fazla bilgi edinin.
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"location": "westus",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"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 az dataprotection backup-policy get-default-policy-template
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.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDatabaseForPostgreSQL
{
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"name": "OssPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"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.
Zamanlanmış tetikleyici
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Gözaltı kuralı için varsayılan yaşam döngüsü
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
İlke şablonunu değiştirme
Azure PowerShell'de, tüm değişiklikleri gerçekleştirmek için nesneleri hazırlama konumları olarak kullanabilirsiniz. Azure CLI'da dosya kullanmanız gerekir çünkü nesne diye bir şey yoktur. Her düzenleme işlemi, içeriğin giriş dosyasından okunduğu ve çıkış dosyasına yönlendirildiği yeni bir dosyaya yeniden yönlendirilmelidir. Daha sonra dosyayı bir betikte kullanırken gerektiği gibi yeniden adlandırabilirsiniz.
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 az dataprotection backup-policy trigger set
.
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
.
az dataprotection backup-policy trigger create-schedule --interval-type Weekly --interval-count 1 --schedule-days 2021-08-15T22:00:00 2021-08-18T22:00:00 2021-08-20T22:00:00
[
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
]
az dataprotection backup-policy trigger set --policy .\OSSPolicy.json --schedule R/2021-08-15T22:00:00+00:00/P1W R/2021-08-18T22:00:00+00:00/P1W R/2021-08-20T22:00:00+00:00/P1W > EditedOSSPolicy.json
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 az dataprotection backup-policy retention-rule create-lifecycle
. Bu yaşam döngülerini yeni veya mevcut kurallarla ilişkilendirmek az dataprotection backup-policy retention-rule set
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.
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore --target-datastore ArchiveStore --copy-option CopyOnExpiryOption > VaultToArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 24 --retention-duration-type Months -source-datastore ArchiveStore > OnArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule set --lifecycles .\VaultToArchiveLifeCycle.JSON .\OnArchiveLifeCycle.JSON --name Monthly --policy .\EditedOSSPolicy.JSON > AddedRetentionRulePolicy.JSON
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 az dataprotection backup-policy tag create-absolute-criteria
. Mevcut etiketi güncelleştirmek veya yeni bir etiket oluşturmak için komutunu kullanın az dataprotection backup-policy tag set
.
Aşağıdaki örnek, ayın ilk başarılı yedeklemesi olan ölçütle birlikte yeni bir etiket oluşturur. Etiketin adı, uygulanacak bekletme kuralıyla aynıdır.
Bu örnekte, etiket ölçütleri olarak adlandırılır Monthly
:
az dataprotection backup-policy tag create-absolute-criteria --absolute-criteria FirstOfMonth > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
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, şu komutu kullanarak az dataprotection backup-policy tag create-generic-criteria
etiketleme ölçütlerini değiştirebilirsiniz:
az dataprotection backup-policy tag create-generic-criteria --days-of-week Sunday Friday > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
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 az dataprotection backup-policy create
:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
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. Örnekte Bash kullanılı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.
Aşağıdaki örnekte Bash kullanılır. İlgili anahtarın gizli tanımlayıcısını not edin.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Yedekleme alanı
Backup kasasının PostgreSQL sunucusuna bağlanması ve ardından anahtar kasasında bulunan anahtarlar aracılığıyla veritabanına erişmesi 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.
PostgreSQL sunucusundaki Backup kasasının yönetilen kimliğine ve veritabanının anahtarlarını depolayan anahtar kasasına vermeniz gereken izinler hakkında bilgi edinin.
İ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ı
az dataprotection backup-instance initialize
kullanarak isteği hazırlayın. - komutunu kullanarak
az dataprotection backup-instance create
veritabanını yedekleme isteğini gönderin.
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQL -l <vault-location> --policy-id <policy_arm_id> --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
İsteğe bağlı yedekleme çalıştırma
Yedeklemeyi tetiklerken bir bekletme kuralı belirtmeniz gerekir. İlkedeki bekletme kurallarını görüntülemek için ilke JSON dosyasına göz atın. Aşağıdaki örnekte, Default
ve Monthly
adlarında iki bekletme kuralı bulunmaktadır. Bu makalede isteğe Monthly
bağlı yedekleme için kural kullanılır.
az dataprotection backup-policy show -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
"id": "/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
"name": "osspol5",
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-04T20:00:00+00:00/P1W",
"R/2020-04-01T20:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"daysOfMonth": null,
"daysOfTheWeek": null,
"monthsOfYear": null,
"objectType": "ScheduleBasedBackupCriteria",
"scheduleTimes": null,
"weeksOfTheMonth": null
}
],
"isDefault": false,
"tagInfo": {
"eTag": null,
"id": "Monthly_",
"tagName": "Monthly"
},
"taggingPriority": 15
},
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": false,
"lifecycles": [
{
"deleteAfter": {
"duration": "P10Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Monthly",
"objectType": "AzureRetentionRule"
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P1Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "ossdemorg",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
İsteğe bağlı yedekleme tetikleme için komutunu az dataprotection backup-instance adhoc-backup
kullanın:
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
İşleri izlemek
az dataprotection job list
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. İlgili işleri Backup kasaları arasında getirmek için az dataprotection job list-from-resourcegraph
komutunu kullanın.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
İlgili içerik
- Azure CLI kullanarak PostgreSQL veritabanlarını geri yükleyin.
- Azure portalını, Azure PowerShell'i ve REST API'yi kullanarak PostgreSQL veritabanını geri yükleyin.