REST API kullanarak Azure PostgreSQL veritabanları için Azure Data Protection yedekleme ilkeleri oluşturma

Yedek ilke, yedeklemelerinizi bekletmeyi ve zamanlamayı yönetir. Azure PostgreSQL veritabanı Yedeklemesi, uzun süreli bekletme sağlar ve günde bir yedeklemeyi destekler.

PostgreSQL veritabanlarını bir kasaya yedeklemek için mevcut bir yedekleme ilkesi yeniden kullanabilir veya REST API'yi kullanarak Azure Kurtarma Hizmetleri kasası için bir yedekleme ilkesi oluşturabilirsiniz.

PostgreSQL yedekleme ilkesi anlama

Disk yedekleme günde birden çok yedekleme sunar ve blob yedeklemesi tetiksız sürekli bir yedeklemeyken, PostgreSQL yedeklemesi Arşiv koruması sunar. İlk kez kasaya gönderilen yedek veriler, tanımlanmış bir kural veya yaşam döngüsüne göre arşiv katmanına taşınabilirsiniz. Bu bağlamda, PostgreSQL için yedekleme ilkesi nesnesini anlıyoruz.

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (Bu durumda tam veritabanı yedeklemesi)
        • Initial Datastore (Yedeklemeler başlangıçta nereye gelecek)
        • Tetikleyici (Yedekleme nasıl tetiklenir)
          • Zamanlama tabanlı
          • Varsayılan Etiketleme Ölçütleri (Tüm zamanlanmış yedekler için varsayılan 'etiket'. Bu etiket, yedeklemeleri bekletme kuralına bağlar)
    • Varsayılan Bekletme Kuralı (İlk veri deposunda, varsayılan olarak tüm yedeklemelere uygulanacak olan kural)

Dolayısıyla, bu nesne ne tür yedeklemelerin tetiklenir, nasıl tetiklenir (zamanlama yoluyla), neyle etiketlendiklerini, nereye ulaşıldılarını (veri deposu) ve veri deposuna yedekleme verilerin yaşam döngüsünü tanımlar. PostgreSQL için varsayılan PowerShell nesnesi her hafta tam bir yedekleme tetikle uyarır ve üç ay süreyle depolandığı kasaya sabitlenir.

Arşiv katmanını ilkeye eklemek için, verilerin ne zaman bir kasadan arşive taşınmayacakna, verilerin ne kadar süreyle arşivde kalacağına ve hangi zamanlanmış yedeklerin arşivlenebilir olarak etiketlenmesi gerektiğine karar verebilirsiniz. Dolayısıyla, yedek verilerin yaşam döngüsünün, arşiv veri deposuna kadar olan kasa veri depolamasında tanımlandığı ve bu verilerin arşiv veri deposunda ne kadar süre tutulacaklarını sağlayacak bir bekletme kuralı eklemeniz gerekir. Ardından, zamanlanmış yedekleri arşiv almaya uygun olarak işaretlenen bir 'etiket' eklemeniz gerekir. Sonuçta elde edilen PowerShell nesnesi aşağıdaki gibidir:

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (Bu durumda tam veritabanı yedeklemesi)
        • Initial Datastore (Yedeklemeler başlangıçta nereye gelecek)
        • Tetikleyici (Yedekleme nasıl tetiklenir)
          • Zamanlama tabanlı
          • Varsayılan Etiketleme Ölçütleri (Tüm zamanlanmış yedekler için varsayılan 'etiket'. Bu etiket, yedeklemeleri bekletme kuralına bağlar)
          • Yeni bekletme kuralı için aynı adı 'X' olan yeni Etiketleme ölçütleri
    • Varsayılan Bekletme Kuralı (İlk veri deposunda, varsayılan olarak tüm yedeklemelere uygulanacak olan kural)
    • 'X' olarak adlandırılmış yeni bir Bekletme kuralı
      • Yaşam Döngüsü
        • Kaynak veri deposu
        • Kaynak veri deposunda Zaman dönemini sil
        • Hedef veri deposuna kopyala

PostgreSQL veritabanlarını yedeklemek üzere bir ilke oluşturmak için, aşağıdaki eylemleri gerçekleştirin:

İlke oluşturma

Önemli

Şu anda, var olan bir ilkeyi güncelleştirme veya değiştirme desteklenmiyor. Alternatif olarak, gerekli ayrıntıların yer alan yeni bir ilke oluşturabilir ve bunu ilgili yedekleme örneğine atabilirsiniz.

Azure Yedekleme ilkesi oluşturmak için aşağıdaki PUT işlemi kullanın:

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01

ve {policyName}{vaultName} URI'de sağlanır. Ek olarak, istek gövdesinde bilgiler sağlanır.

İstek gövdeyi oluşturma

Örneğin, POstgreSQL yedeklemesi için bir ilke oluşturmak için, istek gövdesinin aşağıdaki bileşenleri gerekir:

Ad Gerekli Tür Açıklama
özellikler True BaseBackupPolicy:BackupPolicy BaseBackupPolicyResource özellikleri

İstek gövdesinde tanımların tam listesi için, yedek ilke REST API belgesine bakın.

Örnek istek gövdesi

İlke şöyledir:

  • Haftalık yedekleme için zamanlanmış tetikleyici ve başlangıç saati seçin. (Time + P1W).
  • Datastore, kasa deposu olur,yedekler doğrudan kasaya aktarılır.
  • Yedekler, üç ay (P3M) boyunca kasada saklanır.
{
  "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"
    }
  ]
}

Önemli

Saat biçimleri yalnızca DateTime'ı destekler; yalnızca Saat desteklenmiyor. Günün saati, yedeğin tamamlandıktan sonra değil, yedeklemenin başlangıç saatlerini gösterir.

Yukarıdaki JSON'u iki değişiklikle güncelleştirin: Haftanın birden çok günü yedeklemeler ve PostgreSQL veritabanı yedeklerinin uzun süreli bekletme için arşiv veri deposu ekleme.

Aşağıdaki örnek, haftalık yedeklemenin her hafta Pazar, Çarşamba ve Cuma günleri için yedeklenesinde değişiklik yaptı. Zamanlama tarihi dizisi tarihlerden söz ediyor ve bu tarihlerin haftanın günleri haftanın günleri olarak alınır. Ayrıca, bu zamanlamaların her hafta yinelen programları da belirtmezseniz. Dolayısıyla, zamanlama aralığı 1'dir ve aralık türü Haftalık'tır.

Zamanlanmış tetikleyici:

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "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"
          ],
          "timeZone": "UTC"
        }

Arşiv korumasını eklemek için JSON ilkesini aşağıda olduğu gibi değiştirmeniz gerekir:

Yukarıdaki JSON'un varsayılan bekletme kuralı altındaki başlangıç veri deposu için bir yaşam döngüsü vardır. Bu senaryoda kural, yedek verileri üç ay sonra silmeyi söylüyor. Verilerin arşiv veri deposuna taşındığında, yani yedekleme verilerin önce arşiv veri deposuna kopyalanır ve sonra da kasa veri deposuna silindiğinde geçerli olacak şekilde yeni bir bekletme kuralı eklemişsinizdir. Ayrıca kural, verileri arşiv* veri deposunda tutmak için süreleri tanımlamalı. Şimdi bu yeni kuralı Aylık olarak adla kuralımız, yedeklerin 6 ay süreyle kasa veri deposunda tutulacak ve sonra veri deposuna kopyalanacak şekilde kopyalanacaklarını tanımlar. Daha sonra kasa veri deposunda sil, arşiv veri deposunda 24 ay süreyle verileri korur ve sonra arşiv veri deposunda verileri siler.

Bekletme yaşam döngüsü:

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }

Her bekletme kuralı ekleyseniz, ilkenin Tetikleyici özelliğine ilgili etiketi eklemeniz gerekir. Aşağıdaki örnek, ölçütle birlikte yeni bir etiket oluşturur (ayın ilk başarılı yedeğidir), uygulanacak olan bekletme kuralıyla tam olarak aynı adı içerir.

Bu örnekte, etiket ölçütleri Aylık olarak adlandırılmıştır.

Etiketleme ölçütleri:

{
  "criteria": [
    {
      "absoluteCriteria": [
        "FirstOfMonth"
      ],
      "objectType": "ScheduleBasedBackupCriteria"
    }
  ],
  "isDefault": false,
  "tagInfo": {
    "tagName": "Monthly"
  },
  "taggingPriority": 15
}

Tüm değişiklikler dahil olduktan sonra, JSON ilkesi aşağıdaki gibi görünür:

{
  "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-15T22:00:00+00:00/P1W",
            "R/2021-08-18T22:00:00+00:00/P1W",
            "R/2021-08-20T22:00:00+00:00/P1W"
          ],
          "timeZone": "UTC"
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          },
          {
            "criteria": [
              {
                "absoluteCriteria": [
                  "FirstOfMonth"
                ],
                "objectType": "ScheduleBasedBackupCriteria"
              }
            ],
            "isDefault": false,
            "tagInfo": {
              "tagName": "Monthly"
            },
            "taggingPriority": 15
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }
  ]
}

İlke oluşturma hakkında daha fazla ayrıntı için PostGreSQL veritabanını Yedekleme ilke belgesine bakın.

Yanıtlar

Yedekleme ilkesi oluşturma/güncelleştirme zaman uyumlu bir işlemdir ve işlem başarılı olduktan sonra Tamam'ı döndürür.

Ad Tür Açıklama
200 TAMAM BaseBackupPolicyResource TAMAM

Örnek yanıtlar

İşlem tamamlandıktan sonra, yanıt gövdesinde ilke içeriğiyle birlikte 200 (Tamam) döndürür.

{
    "properties": {
        "policyRules": [
            {
                "backupParameters": {
                    "backupType": "Full",
                    "objectType": "AzureBackupParams"
                },
                "trigger": {
                    "schedule": {
                        "repeatingTimeIntervals": [
                            "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"
                        ],
                        "timeZone": "UTC"
                    },
                    "taggingCriteria": [
                        {
                            "tagInfo": {
                                "tagName": "Monthly",
                                "id": "Monthly_"
                            },
                            "taggingPriority": 15,
                            "isDefault": false,
                            "criteria": [
                                {
                                    "absoluteCriteria": [
                                        "FirstOfMonth"
                                    ],
                                    "objectType": "ScheduleBasedBackupCriteria"
                                }
                            ]
                        },
                        {
                            "tagInfo": {
                                "tagName": "Default",
                                "id": "Default_"
                            },
                            "taggingPriority": 99,
                            "isDefault": true
                        }
                    ],
                    "objectType": "ScheduleBasedTriggerContext"
                },
                "dataStore": {
                    "dataStoreType": "VaultStore",
                    "objectType": "DataStoreInfoBase"
                },
                "name": "BackupWeekly",
                "objectType": "AzureBackupRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P6M"
                        },
                        "targetDataStoreCopySettings": [
                            {
                                "dataStore": {
                                    "dataStoreType": "ArchiveStore",
                                    "objectType": "DataStoreInfoBase"
                                },
                                "copyAfter": {
                                    "objectType": "CopyOnExpiryOption"
                                }
                            }
                        ],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    },
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P24M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "ArchiveStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": false,
                "name": "Monthly",
                "objectType": "AzureRetentionRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P3M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": true,
                "name": "Default",
                "objectType": "AzureRetentionRule"
            }
        ],
        "datasourceTypes": [
            "Microsoft.DBforPostgreSQL/servers/databases"
        ],
        "objectType": "BackupPolicy"
    },
    "id": "/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/DebRG1/providers/Microsoft.DataProtection/backupVaults/DebBackupVault/backupPolicies/OssPolicy1",
    "name": "OssPolicy1",
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

Sonraki adımlar

Azure Diskleri için korumayı etkinleştirme

Azure Yedekleme REST API'leri hakkında daha fazla bilgi için aşağıdaki makalelere bakın: