Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara memulihkan Azure Database for PostgreSQL - Server Fleksibel menggunakan Azure CLI.
Nota
Opsi Pemulihan Lokasi Asli (OLR) tidak didukung untuk database PaaS. Sebagai gantinya, gunakan Alternate-Location Recovery (ALR) untuk memulihkan dari titik pemulihan dan membuat database baru di Azure PostgreSQL yang sama atau lain - Server Fleksibel, menyimpan database sumber dan yang dipulihkan.
Mari kita gunakan brankas Cadangan yang ada TestBkpVault, di bawah grup sumber daya testBkpVaultRG dalam contoh.
Prasyarat
Sebelum Anda memulihkan dari Azure Database for PostgreSQL – Cadangan Server Fleksibel, tinjau prasyarat berikut:
- Pastikan Anda memiliki izin yang diperlukan untuk operasi pemulihan.
- Pastikan akun penyimpanan tujuan untuk pemulihan memiliki properti yang
AllowCrossTenantReplicationdiatur ketrue.
Nota
Data cadangan disimpan di vault Backup sebagai blob dalam penyewa Microsoft. Selama operasi pemulihan, data cadangan disalin dari satu akun penyimpanan ke akun penyimpanan lainnya di seluruh penyewa.
Menyiapkan izin untuk pemulihan
Kubah cadangan menggunakan identitas terkelola untuk mengakses sumber daya Azure lainnya. Untuk memulihkan dari cadangan, identitas terkelola dari vault Backup memerlukan serangkaian izin pada Azure PostgreSQL – Flexible Server tempat database harus dipulihkan.
Untuk menetapkan izin yang relevan bagi identitas terkelola yang ditugaskan oleh sistem brankas pada PostgreSQL – Server Fleksibel target, periksa serangkaian izin yang diperlukan untuk pencadangan database Azure PostgreSQL – Server Fleksibel.
Untuk mengembalikan titik pemulihan dalam bentuk file ke akun penyimpanan, identitas terkelola yang ditetapkan sistem brankas Backup membutuhkan akses ke akun penyimpanan target.
Dapatkan titik pemulihan yang relevan
Untuk mencantumkan semua instans cadangan dalam vault, gunakan az dataprotection backup-instance list perintah . Kemudian ambil instans yang relevan menggunakan perintah az dataprotection backup-instance show. Atau, untuk skenario dalam skala besar, Anda dapat mencantumkan instans cadangan di seluruh vault dan langganan dengan menggunakan perintah az dataprotection backup-instance list-from-resourcegraph.
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
}
.
.
Setelah instans diidentifikasi, ambil titik pemulihan yang relevan dengan menggunakan az dataprotection recovery-point list perintah .
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"
}
Menyiapkan permintaan pemulihan
Anda dapat memulihkan titik pemulihan untuk Database server PostgreSQL – Fleksibel sebagai file saja.
Pulihkan sebagai file
Ambil Pengidentifikasi Sumber Daya Seragam (URI) dari kontainer, dalam akun penyimpanan yang diberi izin. Misalnya, sebuah kontainer bernama testcontainerrestore di bawah akun penyimpanan testossstorageaccount dengan langganan yang berbeda.
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
az dataprotection backup-instance restore initialize-for-data-recovery-as-files Gunakan perintah untuk menyiapkan permintaan pemulihan dengan semua detail yang relevan.
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
Nota
Setelah pemulihan ke akun penyimpanan target selesai, Anda dapat menggunakan utilitas pg_restore untuk memulihkan database Azure Database for PostgreSQL – server fleksibel dari target.
Untuk menyambungkan ke PostgreSQL yang sudah ada – Server Fleksibel dan database yang sudah ada, gunakan perintah berikut:
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
Dalam skrip ini:
-
Fd: Format direktori. -
-j: Jumlah pekerjaan. -
-C: Memulai output dengan perintah untuk membuat database itu sendiri lalu menyambungkan kembali ke dalamnya.
Contoh berikut menunjukkan bagaimana sintaks mungkin muncul:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
Jika Anda memiliki lebih dari satu database untuk dipulihkan, jalankan ulang perintah sebelumnya untuk setiap database. Selain itu, dengan menggunakan beberapa pekerjaan bersamaan -j, Anda dapat mengurangi waktu pemulihan untuk database besar di server target multi-vCore. Jumlah pekerjaan dapat sama dengan atau kurang dari jumlah vCPUs yang dialokasikan untuk server target.
Memicu pemulihan
Untuk memicu operasi pemulihan dengan permintaan yang disiapkan, gunakan az dataprotection backup-instance restore trigger perintah .
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
Lacak pekerjaan
Lacak semua pekerjaan menggunakan perintah az dataprotection job list. Anda dapat mencantumkan semua pekerjaan dan mengambil detail pekerjaan tertentu.
Anda juga dapat menggunakan Az.ResourceGraph untuk melacak tugas di semua penyimpanan cadangan. Gunakan perintah az dataprotection job list-from-resourcegraph untuk mendapatkan pekerjaan yang relevan di semua Backup vault.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --operation Restore