Cadangkan database Azure PostgreSQL menggunakan Azure CLI
Artikel ini menjelaskan cara mencadangkan database Azure PostgreSQL menggunakan Azure CLI.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat vault Pencadangan
- Buat kebijakan pencadangan
- Konfigurasikan cadangan database Azure PostgreSQL
- Menjalankan tugas pencadangan sesuai permintaan
Untuk skenario dan batasan yang didukung database informgreSQL, lihat matriks dukungan.
Membuat vault Pencadangan
Vault cadangan adalah entitas penyimpanan di Azure. Entitas ini menyimpan data cadangan untuk beban kerja baru yang didukung Azure Backup. Misalnya, server Azure Database for PostgreSQL, blob di akun penyimpanan, dan Azure Disks. Brankas Azure Backup memudahkan untuk mengatur data cadangan Anda, sambil meminimalkan overhead manajemen. Kubah cadangan didasarkan pada model Azure Resource Manager Azure, 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, kita akan membuat brankas Backup TestBkpVault, di wilayah westus, pada bagian grup sumber daya testBkpVaultRG. Gunakan perintah az dataprotection vault create untuk membuat brankas Microsoft Azure Backup. Pelajari selengkapnya tentang membuat kubah Cadangan.
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"
}
Setelah brankas dibuat, mari buat kebijakan Cadangan untuk melindungi database Azure PostgreSQL.
Buat kebijakan Cadangan
Memahami kebijakan pencadangan PostGreSQL
Sementara cadangan disk menawarkan beberapa cadangan per hari dan cadangan blob adalah cadangan terus menerus tanpa pemicu, cadangan PostgreSQL menawarkan perlindungan Arsip. Data cadangan yang pertama kali dikirim ke brankas dapat dipindahkan ke tingkat arsip sesuai aturan yang ditentukan atau siklus hidup. Dalam konteks ini, mari kita pahami objek kebijakan cadangan untuk PostgreSQL.
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (Cadangan database lengkap dalam kasus ini)
- Datastore Awal (Tempat cadangan akan ditempatkan awalnya)
- Pemicu (Bagaimana pencadangan dipicu)
- Berdasarkan jadwal
- Kriteria pemberian tag default ('tag' default untuk semua pencadangan terjadwal. Tag ini menautkan cadangan ke aturan retensi)
- BackupParameter
- Aturan Retensi Default (Aturan yang akan diterapkan ke semua cadangan, secara default, pada datastore awal)
- BackupRule
Jadi, objek ini mendefinisikan jenis cadangan apa yang dipicu, bagaimana mereka dipicu (melalui jadwal), apa yang ditandai dengan mereka, di mana mereka mendarat (datastore), dan siklus hidup data cadangan di datastore. Objek PowerShell default untuk PostgreSQL mengatakan untuk memicu pencadangan penuh setiap minggu dan mereka akan mencapai vault, tempat mereka disimpan selama tiga bulan.
Jika ingin menambahkan tingkat arsip ke kebijakan, Anda harus memutuskan kapan data akan dipindahkan dari brankas ke arsip, berapa lama data akan disimpan dalam arsip, dan pencadangan terjadwal mana yang harus diberi tag sebagai dapat diarsipkan. Oleh karena itu, Anda harus menambahkan aturan retensi, di mana siklus hidup data cadangan akan ditentukan dari datastore brankas ke penyimpanan data arsip, dan berapa lama mereka akan tetap berada di datastore arsip . Kemudian Anda perlu menambahkan tag yang akan menandai pencadangan terjadwal sebagai layak untuk diarsipkan.
Objek PowerShell yang dihasilkan adalah sebagai berikut:
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (Cadangan database lengkap dalam kasus ini)
- Datastore Awal (Tempat cadangan akan ditempatkan awalnya)
- Pemicu (Bagaimana pencadangan dipicu)
- Berdasarkan jadwal
- Kriteria pemberian tag default ('tag' default untuk semua pencadangan terjadwal. Tag ini menautkan cadangan ke aturan retensi)
- Kriteria Pemberian Tag baru untuk aturan retensi baru dengan nama yang sama 'X'
- BackupParameter
- Aturan Retensi Default (Aturan yang akan diterapkan ke semua cadangan, secara default, pada datastore awal)
- Aturan Retensi baru bernama 'X'
- Siklus hidup
- Datastore sumber
- Hapus Setelah periode waktu di datastore sumber
- Salin ke datastore target
- Siklus hidup
- BackupRule
Ambil templat kebijakan
Untuk memahami komponen dalam kebijakan Cadangan untuk pencadangan database Azure PostgreSQL, ambil templat kebijakan menggunakan perintah az dataprotection backup-policy get-default-policy-template. Perintah ini mengembalikan templat kebijakan default untuk jenis sumber data tertentu. 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 akan menghapus/menyalin/memindahkan cadangan). Dalam pencadangan database Azure PostgreSQL, nilai default untuk pemicu adalah Pemicu mingguan terjadwal (satu pencadangan setiap tujuh hari) dan untuk mempertahankan setiap pencadangan selama tiga bulan.
Pemicu terjadwal:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Siklus hidup aturan retensi default:
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Mengubah templat kebijakan
Penting
Di Azure PowerShell, Objek dapat digunakan sebagai lokasi pentahapan untuk melakukan semua perubahan. Di Azure CLI, kita harus menggunakan file, karena tidak ada gagasan tentang Objek. Setiap operasi edit harus diarahkan ke file baru, tempat konten dibaca dari file input dan diarahkan kembali ke file output. Anda nanti dapat mengganti nama file sesuai kebutuhan saat menggunakan skrip.
Ubah jadwal
Templat kebijakan default menawarkan cadangan sekali seminggu. Anda dapat mengubah jadwal untuk cadangan terjadi beberapa hari per minggu. Untuk mengubah jadwal, gunakan perintah az dataprotection backup-policy trigger set.
Contoh berikut memodifikasi cadangan mingguan untuk kembali terjadi pada setiap hari Minggu, Rabu, dan Jumat setiap minggu. Array tanggal jadwal menyebutkan tanggal, dan hari dalam seminggu dari tanggal tersebut diambil sebagai hari dalam seminggu. Anda juga perlu menentukan bahwa jadwal ini harus diulang setiap minggu. Jadi, interval jadwal adalah 1 dan jenis interval adalah Mingguan.
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 seperti di bawah ini.
Templat default akan 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, yaitu data cadangan pertama kali disalin ke datastore arsip, dan kemudian dihapus di datastore vault. Juga, aturan harus menentukan durasi untuk menyimpan data di datastore arsip. Gunakan perintah az dataprotection backup-policy retention-rule create-lifecycle untuk membuat siklus hidup baru dan gunakan perintah az dataprotection backup-policy retention-rule set untuk mengaitkannya dengan aturan baru atau dengan aturan yang ada.
Contoh berikut membuat aturan retensi baru bernama Bulanan, di mana pencadangan pertama yang berhasil setiap bulan harus 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 aturan retensi dibuat, Anda harus membuat tag yang sesuai di properti Pemicu kebijakan Cadangan. Gunakan perintah az dataprotection backup-policy tag create-absolute-criteria untuk membuat kriteria pemberian tag baru dan gunakan perintah az dataprotection backup-policy tag set untuk memperbarui tag yang ada atau membuat tag baru.
Contoh berikut membuat tag baru bersama dengan kriteria, cadangan pertama yang berhasil dalam sebulan. Tag tersebut memiliki nama yang sama dengan aturan retensi terkait yang diterapkan.
Dalam contoh ini, kriteria tag harus diberi nama Bulanan.
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
Misalkan jika jadwal adalah beberapa pencadangan per minggu (setiap hari Minggu, Rabu, Kamis seperti yang ditentukan dalam contoh di atas) dan Anda ingin mengarsipkan cadangan hari Minggu dan Jumat, maka kriteria penandaan dapat diubah sebagai berikut, menggunakan perintah az dataprotection backup-policy tag create-generic-criteria.
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 templat diubah sesuai persyaratan, gunakan perintah az dataprotection backup-policy create untuk membuat kebijakan menggunakan templat yang diubah.
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Konfigurasikan pencadangan
Setelah brankas dan kebijakan dibuat, ada tiga poin penting yang perlu Anda pertimbangkan untuk melindungi database Azure PostgreSQL.
Entitas utama yang terlibat
Database PostGreSQL untuk dilindungi
Ambil Azure Resource Manager ID (ARM ID) dari PostgreSQL untuk dilindungi. Azure Resource Manager ID berfungsi sebagai pengidentifikasi database. Kami akan menggunakan contoh database bernama empdb11 di bawah server PostgreSQL testposgresql, yang ada di grup sumber daya ossrg di bawah langganan yang berbeda.
Contoh berikut menggunakan bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Brankas kunci Azure
Layanan Azure Backup tidak menyimpan nama pengguna dan kata sandi untuk tersambung ke database PostgreSQL. Sebagai gantinya, admin pencadangan perlu menyemai kunci ke dalam brankas kunci. Kemudian layanan Backup akan mengakses brankas kunci, membaca kunci, dan mengakses database. Catat pengidentifikasi rahasia dari kunci yang relevan.
Contoh berikut menggunakan bash.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Kubah cadangan
Vault cadangan harus terhubung ke server PostgreSQL, dan kemudian mengakses database melalui kunci yang ada di brankas kunci. Oleh karena itu, brankas cadangan memerlukan akses ke server PostgreSQL dan brankas kunci. Access diberikan ke vault Backup Managed Service Identity (MSI).
Lihat izin yang harus Anda berikan ke Managed Service Identity (MSI) vault Backup di server PostgreSQL dan Azure Key Vault yang menyimpan kunci ke database.
Siapkan permintaan
Setelah semua izin yang relevan diatur, konfigurasi pencadangan dilakukan dalam dua langkah.
- Kami menyiapkan permintaan yang relevan dengan menggunakan brankas, kebijakan, database PostgreSQL yang relevan menggunakan perintah az dataprotection backup-instance initialize.
- Kami mengirimkan permintaan untuk melindungi database 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, buka file JSON kebijakan untuk aturan retensi. Dalam contoh berikut, ada dua aturan retensi dengan nama Default dan Bulanan. Kita akan menggunakan aturan Bulanan 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 cadangan sesuai permintaan, gunakan perintah az dataprotection backup-instance adhoc-backup.
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
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 semua pekerjaan di semua vault Cadangan. Gunakan perintah az dataprotection job list-from-resourcegraph untuk mengambil pekerjaan relevan yang ada di seluruh brankas Cadangan.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed