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 mencadangkan database PostgreSQL di Azure Virtual Machines dengan menggunakan Azure CLI. Anda juga dapat mengonfigurasi pencadangan menggunakan portal Microsoft Azure, Azure PowerShell, dan REST API untuk database PostgreSQL.
Pelajari selengkapnya tentang skenario yang didukung dan tanya jawab umum untuk mencadangkan Azure Database for PostgreSQL.
Membuat Brankas Pencadangan
Vault Backup adalah entitas penyimpanan di Azure. Ini menyimpan data cadangan untuk beban kerja baru yang didukung Azure Backup, seperti server Azure Database for PostgreSQL, blob di akun penyimpanan, dan disk Azure. Brankas Azure Backup memudahkan untuk mengatur data cadangan Anda, sambil meminimalkan overhead manajemen. Tempat penyimpanan cadangan didasarkan pada model Azure Resource Manager, yang menyediakan kemampuan yang disempurnakan untuk membantu mengamankan data pencadangan.
Sebelum Anda membuat brankas Backup, pilih redundansi penyimpanan data di dalam brankas. Kemudian lanjutkan untuk membuat brankas Backup dengan redundansi penyimpanan dan lokasinya.
Dalam artikel ini, Anda membuat Backup vault dengan nama TestBkpVault, di wilayah westus, di bawah grup sumber daya testBkpVaultRG. Gunakan perintah az dataprotection vault create untuk membuat vault Backup.
Pelajari selengkapnya tentang membuat vault Backup.
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"
}
Buat kebijakan pencadangan
Setelah membuat vault, Anda dapat membuat kebijakan pencadangan untuk membantu melindungi database PostgreSQL. Anda juga dapat membuat kebijakan pencadangan untuk database PostgreSQL menggunakan REST API.
Memahami kebijakan pencadangan PostgreSQL
Sedangkan cadangan disk menawarkan beberapa cadangan per hari dan cadangan blob adalah cadangan berkelanjutan tanpa pemicu, cadangan PostgreSQL menawarkan perlindungan arsip. Data cadangan yang pertama kali dikirim ke vault dapat dipindahkan ke tingkat arsip sesuai dengan aturan yang ditentukan atau siklus hidup.
Dalam konteks ini, hierarki berikut dapat membantu Anda memahami objek kebijakan cadangan untuk PostgreSQL:
- Aturan kebijakan
- Aturan cadangan
- Parameter pencadangan
- Jenis cadangan (cadangan database lengkap dalam kasus ini)
- Datastore awal (tempat pencadangan awal ditempatkan)
- Pemicu (bagaimana cadangan diaktifkan)
- Jadwal
- Kriteria pemberian tag default (tag default yang menautkan semua cadangan terjadwal ke aturan retensi)
- Parameter pencadangan
- Aturan retensi bawaan (aturan yang diterapkan secara otomatis ke semua cadangan pada datastore awal)
- Aturan cadangan
Objek kebijakan mendefinisikan jenis cadangan yang dipicu, bagaimana mereka dipicu (melalui jadwal), dengan apa mereka diberi tag, di mana mereka ditempatkan (datastore), dan siklus hidup data tersebut di datastore.
Objek PowerShell bawaan untuk PostgreSQL menentukan pemicu pencadangan penuh setiap minggu. Cadangan mencapai brankas, tempat cadangan disimpan selama tiga bulan.
Jika Anda ingin menambahkan tingkat arsip ke kebijakan, Anda harus memutuskan kapan data akan dipindahkan dari vault ke arsip, berapa lama data akan tetap berada di arsip, dan cadangan terjadwal mana yang harus ditandai sebagai dapat diarsipkan. Anda harus menambahkan aturan retensi yang menentukan siklus hidup data cadangan dari datastore vault ke datastore arsip. Aturan retensi juga menentukan berapa lama data cadangan akan tetap berada di datastore arsip. Kemudian Anda perlu menambahkan tag yang menandai cadangan terjadwal sebagai memenuhi syarat untuk diarsipkan.
Objek PowerShell yang dihasilkan adalah sebagai berikut:
- Aturan kebijakan
- Aturan cadangan
- Parameter pencadangan
- Jenis cadangan (cadangan database lengkap dalam kasus ini)
- Datastore awal (tempat pencadangan awal ditempatkan)
- Pemicu (bagaimana cadangan diaktifkan)
- Jadwal
- Kriteria pemberian tag default (tag default yang menautkan semua cadangan terjadwal ke aturan retensi)
- Kriteria penandaan baru untuk aturan retensi baru dengan nama yang sama
- Parameter pencadangan
- Aturan retensi bawaan (aturan yang diterapkan secara otomatis ke semua cadangan pada datastore awal)
- Aturan retensi baru
- Siklus hidup
- Sumber datastore
- Periode waktu penghapusan di datastore sumber
- Salin ke penyimpanan data target
- Siklus hidup
- Aturan cadangan
Ambil templat kebijakan
Untuk memahami komponen dalam kebijakan cadangan untuk cadangan database PostgreSQL, ambil templat kebijakan dengan menggunakan az dataprotection backup-policy get-default-policy-template perintah . Perintah ini mengembalikan templat kebijakan default untuk jenis sumber data. Gunakan templat kebijakan ini untuk membuat kebijakan baru.
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"
}
]
}
Templat kebijakan terdiri dari pemicu (yang memutuskan apa yang memicu cadangan) dan siklus hidup (yang memutuskan kapan harus menghapus, menyalin, atau memindahkan cadangan). Dalam cadangan database PostgreSQL, nilai default untuk pemicu adalah pemicu mingguan terjadwal (satu cadangan setiap tujuh hari). Setiap cadangan dipertahankan selama tiga bulan.
Pemicu terjadwal
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Siklus hidup default untuk aturan penahanan
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Modifikasi templat kebijakan
Di Azure PowerShell, Anda dapat menggunakan objek sebagai lokasi penahapan untuk melakukan semua modifikasi. Di Azure CLI, Anda harus menggunakan file, karena tidak ada konsep objek. Setiap operasi edit harus dialihkan ke file baru, di mana konten dibaca dari file input dan dialihkan ke file output. Anda nantinya dapat mengganti nama file sesuai kebutuhan saat menggunakannya dalam skrip.
Ubah jadwal
Templat kebijakan default menawarkan cadangan sekali seminggu. Anda dapat mengubah jadwal agar pencadangan data terjadi beberapa hari dalam seminggu. Untuk mengubah jadwal, gunakan az dataprotection backup-policy trigger set perintah .
Contoh berikut memodifikasi cadangan mingguan menjadi Minggu, Rabu, dan Jumat setiap minggu. Array tanggal jadwal mencantumkan tanggal, dan hari dalam seminggu untuk tanggal tersebut dianggap sebagai hari dalam seminggu. Anda juga perlu menentukan bahwa jadwal ini harus diulang setiap minggu. Jadi, interval jadwal adalah 1 dan jenis intervalnya adalah 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
Tambahkan aturan retensi baru
Jika Anda ingin menambahkan perlindungan arsip, Anda perlu mengubah templat kebijakan.
Templat default memiliki siklus hidup untuk datastore awal di bawah aturan retensi default. Dalam skenario ini, aturan mengatakan untuk menghapus data cadangan setelah tiga bulan. Anda harus menambahkan aturan retensi baru yang menentukan kapan data dipindahkan ke datastore arsip. Artinya, data cadangan pertama kali disalin ke penyimpanan data arsip, lalu dihapus di datastore brankas.
Selain itu, aturan harus menentukan berapa lama untuk menyimpan data di datastore arsip. Untuk membuat siklus hidup baru, gunakan az dataprotection backup-policy retention-rule create-lifecycle perintah . Untuk mengaitkan siklus hidup tersebut dengan aturan baru atau yang sudah ada, gunakan az dataprotection backup-policy retention-rule set perintah .
Contoh berikut membuat aturan retensi baru bernama Monthly. Dalam aturan ini, cadangan pertama yang berhasil setiap bulan disimpan di brankas selama enam bulan, dipindahkan ke tingkat arsip, dan disimpan di tingkat arsip selama 24 bulan.
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
Tambahkan tag dan kriteria yang relevan
Setelah membuat aturan retensi, Anda harus membuat tag yang sesuai pada properti Trigger dari kebijakan pencadangan. Untuk membuat kriteria pemberian tag baru, gunakan az dataprotection backup-policy tag create-absolute-criteria perintah . Untuk memperbarui tag yang ada atau membuat tag baru, gunakan az dataprotection backup-policy tag set perintah .
Contoh berikut membuat tag baru dengan mempertimbangkan kriteria, yaitu cadangan pertama yang sukses bulan ini. Tag tersebut memiliki nama yang sama dengan aturan retensi terkait yang diterapkan.
Dalam contoh ini, kriteria tag diberi nama 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
Jika jadwalnya adalah beberapa cadangan per minggu (setiap Minggu, Rabu, dan Kamis, seperti yang ditentukan dalam contoh sebelumnya) dan Anda ingin mengarsipkan cadangan Minggu dan Jumat, Anda dapat mengubah kriteria pemberian tag dengan menggunakan az dataprotection backup-policy tag create-generic-criteria perintah :
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
Buat kebijakan cadangan PostgreSQL baru
Setelah Anda mengubah templat sesuai dengan persyaratan, gunakan az dataprotection backup-policy create perintah untuk membuat kebijakan dengan menggunakan templat yang dimodifikasi:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Atur cadangan
Setelah membuat vault dan kebijakan, Anda perlu mempertimbangkan tiga langkah penting untuk mencadangkan database PostgreSQL di Azure Database for PostgreSQL.
Memahami entitas utama
Basis data PostgreSQL yang akan dicadangkan
Ambil ID Resource Manager dari database PostgreSQL untuk dibackup. ID ini berfungsi sebagai pengidentifikasi database. Contoh berikut menggunakan database bernama empdb11 di bawah server testposgresqlPostgreSQL , yang ada di grup ossrg sumber daya di bawah langganan yang berbeda. Contohnya menggunakan Bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Penyimpanan kunci
Layanan Azure Backup tidak menyimpan nama pengguna dan kata sandi untuk tersambung ke database PostgreSQL. Sebagai gantinya, admin cadangan memasukkan kunci ke dalam brankas kunci. Layanan Azure Backup kemudian mengakses brankas kunci, membaca kunci, dan mengakses database.
Contoh berikut menggunakan Bash. Catat pengidentifikasi rahasia dari kunci yang relevan.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Kubah cadangan
Vault Backup harus terhubung ke server PostgreSQL lalu mengakses database melalui kunci yang ada di brankas kunci. Jadi, vault Backup memerlukan akses ke server PostgreSQL dan brankas kunci. Akses diberikan ke identitas terkelola brankas Backup.
Baca tentang izin yang harus Anda berikan ke identitas terkelola brankas Backup di server PostgreSQL dan brankas kunci yang menyimpan kunci ke database.
Siapkan permintaan
Setelah Anda mengatur semua izin yang relevan, lakukan konfigurasi cadangan dalam dua langkah:
- Siapkan permintaan dengan menggunakan vault, kebijakan, dan database PostgreSQL yang relevan dalam perintah
az dataprotection backup-instance initialize. - Kirim permintaan untuk mencadangkan database dengan menggunakan perintah
az dataprotection backup-instance create.
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
Jalankan cadangan sesuai permintaan
Anda harus menentukan aturan retensi saat memicu pencadangan. Untuk melihat aturan retensi dalam kebijakan, telusuri file JSON kebijakan. Dalam contoh berikut, ada dua aturan retensi dengan nama Default dan Monthly. Artikel ini menggunakan Monthly aturan untuk pencadangan sesuai permintaan.
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"
}
Untuk memicu pencadangan sesuai permintaan, gunakan az dataprotection backup-instance adhoc-backup perintah :
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Lacak pekerjaan
Lacak semua pekerjaan dengan menggunakan perintah az dataprotection job list. Anda dapat mencantumkan semua pekerjaan dan mengambil detail pekerjaan tertentu.
Anda juga dapat menggunakan Az.ResourceGraph untuk melacak semua tugas di semua Brankas Cadangan. Gunakan perintah az dataprotection job list-from-resourcegraph untuk mengambil pekerjaan yang relevan di seluruh vault Backup.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
Konten terkait
- Pulihkan database PostgreSQL dengan menggunakan Azure CLI.
- Pulihkan database PostgreSQL menggunakan portal Microsoft Azure, Azure PowerShell, dan REST API.
- Mengelola server Azure Database for PostgreSQL dengan menggunakan portal Microsoft Azure.