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 PostgreSQL için Azure Veritabanı - Esnek Sunucu'nun nasıl geri yükleneceği açıklanmaktadır.
Uyarı
Özgün Konum Kurtarma (OLR) seçeneği PaaS veritabanları için desteklenmez. Bunun yerine Alternate-Location Recovery'yi (ALR) kullanarak bir kurtarma noktasından geri yükleme yapın ve hem kaynak hem de geri yüklenen veritabanlarını koruyarak aynı veya başka bir Azure PostgreSQL – Esnek Sunucuda yeni bir veritabanı oluşturun.
Örneklerde kaynak grubunun testBkpVaultRG altında mevcut bir Backup kasasını TestBkpVaultkullanalım.
Önkoşullar
PostgreSQL için Azure Veritabanı – Esnek Sunucu yedeklemelerinden geri yüklemeden önce aşağıdaki önkoşulları gözden geçirin:
- Geri yükleme işlemi için gerekli izinlere sahip olduğunuzdan emin olun.
- Geri yükleme için hedef depolama hesabında
AllowCrossTenantReplicationözelliğinintrueolarak ayarlandığından emin olun.
Uyarı
Yedekleme verileri, Yedekleme kasasında Microsoft kiracısında bir blob olarak depolanır. Geri yükleme işlemi sırasında yedekleme verileri kiracılar arasında bir depolama hesabından diğerine kopyalanır.
Geri yükleme izinlerini ayarlama
Yedekleme kasası, diğer Azure kaynaklarına erişmek için yönetilen kimliği kullanır. Yedeklemeden geri yüklemek için Backup kasasının yönetilen kimliği, veritabanının geri yüklenmesi gereken Azure PostgreSQL – Esnek Sunucu üzerinde bir dizi izin gerektirir.
Kasanın sistem tarafından atanan yönetilen kimliğine yönelik ilgili izinleri hedef PostgreSQL – Esnek sunucuya atamak için Azure PostgreSQL – Esnek Sunucu veritabanını yedeklemek için gereken izin kümesini denetleyin.
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ğinehedef 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 az dataprotection backup-instance show komutunu kullanarak ilgili örneği alı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 AzureDatabaseForPostgreSQLFlexibleServer -subscriptions "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
{
"datasourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql/databases/empdb11",
"extendedLocation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"objectType": "Datasource",
"resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql/databases/empdb11",
"resourceLocation": "westus",
"resourceName": "postgres",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"resourceUri": ""
},
"dataSourceProperties": null,
"dataSourceSetInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql",
"resourceLocation": "westus",
"resourceName": "testpostgresql",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"tags": null,
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "testBkpVault",
"zones": null
}
.
.
Örnek tanımlandığında, az dataprotection recovery-point list komutunu kullanarak ilgili kurtarma noktasını getirin.
az dataprotection recovery-point list --backup-instance-name testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149 -g testBkpVaultRG --vault-name TestBkpVault
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149/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"
}
Geri yükleme isteğini hazırlama
PostgreSQL – Esnek sunucu veritabanının kurtarma noktasını yalnızca dosya olarak geri yükleyebilirsiniz.
Dosya olarak geri yükleme
İzinlerin atandığı depolama hesabında kapsayıcının Tekdüzen Kaynak Tanımlayıcısını (URI) getirin. Örneğin, farklı bir aboneliğe sahip depolama hesabı testossstorageaccount altında, testcontainerrestore adlı bir kapsayıcı.
$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 AzureDatabaseForPostgreSQLFlexibleServer --restore-location {location} --source-datastore VaultStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a > OssRestoreAsFilesReq.JSON
Uyarı
Hedef depolama hesabına geri yükleme tamamlandıktan sonra, postgreSQL için Azure Veritabanı – Esnek sunucu veritabanını hedeften geri yüklemek için yardımcı programını kullanabilirsiniz pg_restore .
Mevcut bir PostgreSQL – Esnek Sunucuya ve var olan bir veritabanına bağlanmak için aşağıdaki komutu kullanın:
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
Bu betikte:
-
Fd: Dizin biçimi. -
-j: İş sayısı. -
-C: Çıkış, veritabanını oluşturma ve ardından ona yeniden bağlanma komutuyla başlar.
Aşağıdaki örnekte söz diziminin nasıl görünebileceği gösterilmektedir:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
Geri yükleneceği birden fazla veritabanınız varsa, her veritabanı için önceki komutu yeniden çalıştırın. Ayrıca, birden çok eşzamanlı iş -jkullanarak, çok sanal çekirdekli hedef sunucudaki büyük bir veritabanının geri yükleme süresini kısaltabilirsiniz. İş sayısı, hedef sunucu için ayrılan sayıdan vCPUs küçük veya buna eşit olabilir.
Geri yüklemeyi tetikleme
Hazırlanan istekle geri yükleme işlemini tetikleme için komutunu kullanın az dataprotection backup-instance restore trigger .
az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149 --restore-request-object OssRestoreReq.JSON
İşleri takip et
az dataprotection job list komutunu kullanarak tüm işleri izleyin. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.
Ayrıca, tüm Backup kasalarında işleri izlemek için de kullanabilirsiniz Az.ResourceGraph .
az dataprotection job list-from-resourcegraph Tüm Backup kasalarında ilgili işi almak için komutunu kullanın.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --operation Restore