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, PostgreSQL veritabanlarını Azure Backup aracılığıyla yedeklediğiniz bir PostgreSQL için Azure Veritabanı sunucusuna geri yüklemek için Azure CLI'nin nasıl kullanılacağı açıklanmaktadır. PostgreSQL veritabanını Azure portalı, Azure PowerShell ve REST API kullanarak da geri yükleyebilirsiniz.
PostgreSQL veritabanı bir hizmet olarak platform (PaaS) veritabanı olduğundan, mevcut veritabanını değiştirerek (yedeklemelerin alındığı yerden) geri yüklemek için Original-Location Recovery (OLR) seçeneği desteklenmez. Aynı PostgreSQL için Azure Veritabanı sunucusunda veya başka bir PostgreSQL sunucusunda yeni bir veritabanı oluşturmak için kurtarma noktasından geri yükleyebilirsiniz. Bu seçenek Alternate-Location Kurtarma (ALR) olarak adlandırılır. ALR hem kaynak veritabanını hem de geri yüklenen (yeni) veritabanını tutmaya yardımcı olur.
Bu makalede yer alan örnekler, kaynak grubu TestBkpVault
altında testBkpVaultRG
adlı mevcut bir Yedekleme kasasına atıfta bulunmaktadır.
Yedeklenen PostgreSQL veritabanını geri yükleme
İzinleri ayarlama
Backup kasası, diğer Azure kaynaklarına erişmek için yönetilen kimlik kullanır. Yedeklemeden geri yüklemek için Backup kasasının yönetilen kimliği, veritabanının geri yüklenmesi gereken PostgreSQL için Azure Veritabanı sunucusunda bir dizi izin gerektirir.
Bir kasanın sistem atamalı yönetilen kimliğine yönelik ilgili izinleri hedef PostgreSQL sunucusuna atamak için PostgreSQL veritabanını yedeklemek için gereken izin kümesine bakın.
Kurtarma noktasını bir depolama hesabına dosya olarak geri yüklemek için Backup kasasının sistem tarafından atanan yönetilen kimliğine hedef depolama hesabında erişim gerekir.
İlgili kurtarma noktasını getir
Kasadaki tüm yedekleme örneklerini listelemek için az dataprotection backup-instance list
komutunu kullanın. Ardından ilgili örneği getirmek için az dataprotection backup-instance show
komutunu kullanın.
Alternatif olarak, büyük ölçekli senaryolar için, az dataprotection backup-instance list-from-resourcegraph
komutunu kullanarak kasalar ve abonelikler arasında yedekleme örneklerini listeleyebilirsiniz.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL -subscriptions "xxxxxxxx-xxxx-xxxx-xxxx"
{
"datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
"extendedLocation": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
"resourceLocation": "westus",
"resourceName": "postgres",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceUri": ""
},
"dataSourceProperties": null,
"dataSourceSetInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql",
"resourceLocation": "westus",
"resourceName": "testpostgresql",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceUri": ""
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"friendlyName": "testpostgresql\\empdb11",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/osspol3",
"policyParameters": null,
"policyVersion": ""
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded",
"validationType": null
},
"protectionState": "ProtectionConfigured",
"resourceGroup": "testBkpVaultRG",
"sku": null,
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tags": null,
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "testBkpVault",
"zones": null
}
.
.
.
.
.
Örneği tanımladıktan sonra az dataprotection recovery-point list
komutunu kullanarak ilgili kurtarma noktasını getirin.
az dataprotection recovery-point list --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -g testBkpVaultRG --vault-name TestBkpVault
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/recoveryPoints/9da55e757af94261afa009b43cd3222a",
"name": "9da55e757af94261afa009b43cd3222a",
"properties": {
"friendlyName": "2031fdb43a914114b6ce644eb6fcb5ce",
"objectType": "AzureBackupDiscreteRecoveryPoint",
"policyName": "oss-clitest-policy",
"policyVersion": null,
"recoveryPointDataStoresDetails": [
{
"creationTime": "2021-09-13T15:17:41.209845+00:00",
"expiryTime": null,
"id": "beddea84-7b30-42a5-a752-7c75baf96a52",
"metaData": "{\"objectType\":\"PostgresBackupMetadata\",\"version\":\"1.0\",\"postgresVersion\":\"11\",\"dbName\":\"postgres\",\"serverName\":\"testpostgresql\",\"serverFQDN\":\"testpostgresql.postgres.database.azure.com\",\"usernameUsed\":\"backupadmin@testpostgresql\",\"backupToolPath\":\"postgresql-11.6-1\\\\bin\\\\pg_dump.exe\",\"backupType\":\"Full\",\"backupDumpFormat\":\"CUSTOM\",\"backupToolArgsFormat\":\"--no-acl --no-owner --serializable-deferrable --no-tablespaces --quote-all-identifiers -Fc -d postgres://{0}:{1}@{2}:5432/{3}?sslmode=verify-full&sslrootcert=E:\\\\approot\\\\Plugins\\\\Postgres\\\\..\\\\..\\\\postgres-root.crt\",\"storageUnits\":{\"1\":\"DbBackupDumpData\"},\"streamNamesInFirstStorageUnit\":[\"dbbkpdmpdatastream-1631546260050\"],\"pitId\":\"2031fdb43a914114b6ce644eb6fcb5ce\",\"bytesTransferred\":2063,\"dataSourceSize\":8442527,\"backupToolVersion\":\"11\"}",
"rehydrationExpiryTime": null,
"rehydrationStatus": null,
"state": "COMMITTED",
"type": "VaultStore",
"visible": true
}
],
"recoveryPointId": "9da55e757af94261afa009b43cd3222a",
"recoveryPointTime": "2021-09-13T15:17:41.209845+00:00",
"recoveryPointType": "Full",
"retentionTagName": "default",
"retentionTagVersion": "637671427933449525"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"
}
Kurtarma noktasını arşiv katmanından getirmeniz gerekiyorsa içindeki type
değişkeni recoveryPointDataStoreDetails
olur ArchiveStore
.
Geri yükleme isteğini hazırlama
PostgreSQL veritabanı için çeşitli geri yükleme seçenekleri vardır. Kurtarma noktasını başka bir veritabanı olarak geri yükleyebilir veya dosya olarak geri yükleyebilirsiniz. Kurtarma noktası arşiv katmanında da olabilir.
Veritabanı olarak geri yükleme
İzinleri atadığınız hedef PostgreSQL sunucusunu kullanarak yeni PostgreSQL veritabanının Azure Resource Manager kimliğini oluşturun. Ayrıca gerekli PostgreSQL veritabanı adını da oluştur. Örneğin, bir PostgreSQL veritabanı farklı bir aboneliğe sahip kaynak grubunda emprestored21
adlı hedef PostgreSQL sunucusu altında adlandırılabilir:targetossserver
targetrg
$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
az dataprotection backup-instance restore initialize-for-data-recovery
Geri yükleme isteğini tüm ilgili ayrıntılarla hazırlamak için komutunu kullanın:
az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore VaultStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" > OssRestoreReq.JSON
Arşiv tabanlı kurtarma noktası için şunları yapmanız gerekir:
- Arşiv veri deposundan kasa veri deposuna yeniden doldurma.
- Kaynak veri depolarını değiştirin.
- Yeniden sulandırma önceliğini belirlemek için diğer parametreleri ekleyin.
- Yeniden etkinleştirilen kurtarma noktasının depo veri tabanında tutulacağı süreyi belirtin.
- Bu kurtarma noktasından veritabanı olarak geri yükleyin.
Daha önce bahsedilen tüm işlemler için isteği bir kerede hazırlamak için aşağıdaki komutu kullanın:
az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore ArchiveStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" --rehydration-priority Standard --rehydration-duration 12 > OssRestoreFromArchiveReq.JSON
Dosya olarak geri yükleme
İzinleri atadığınız depolama hesabı içindeki kapsayıcının URI'sini getirin. Aşağıdaki örnekte, farklı bir abonelikle testcontainerrestore
adlı depolama hesabının altında testossstorageaccount
adlı bir kapsayıcı kullanılır.
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
az dataprotection backup-instance restore initialize-for-data-recovery-as-files
Geri yükleme isteğini tüm ilgili ayrıntılarla hazırlamak için komutunu kullanın:
az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore VaultStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a > OssRestoreAsFilesReq.JSON
Arşiv tabanlı kurtarma noktası için aşağıdaki betikte:
- Kaynak veri depolarını değiştirin.
- Yeniden nemlendirme önceliğini ve yeniden nemlendirilmiş kurtarma noktasının, gün cinsinden saklama süresini ekleyin.
az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore ArchiveStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a --rehydration-priority Standard --rehydration-duration 12 > OssRestoreAsFilesReq.JSON
JSON dosyasının yeni kaynaklar oluşturmada başarılı olup olmadığını doğrulamak için komutunu kullanın az dataprotection backup-instance validate-for-restore
.
Geri yüklemeyi tetikleme
az dataprotection backup-instance restore trigger
Önceden hazırlanmış istekle geri yükleme işlemini tetikleme komutunu kullanın:
az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --restore-request-object OssRestoreReq.JSON
İşleri takip et
komutunu kullanarak az dataprotection job list
işleri izleyin. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.
Ayrıca Az.ResourceGraph
, tüm yedekleme depolarında işleri izlemek için kullanabilirsiniz. İlgili işi tüm Backup kasalarında almak için az dataprotection job list-from-resourcegraph
komutunu kullanın.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore