Azure PostgreSQL-adatbázisok biztonsági mentése az Azure CLI használatával
Ez a cikk bemutatja, hogyan készíthet biztonsági másolatot az Azure PostgreSQL-adatbázisról az Azure CLI használatával.
Ebből a cikkből megtudhatja, hogyan:
- Backup-tároló létrehozása
- Biztonsági mentési szabályzat létrehozása
- Azure PostgreSQL-adatbázis biztonsági mentésének konfigurálása
- Igény szerinti biztonsági mentési feladat futtatása
Az informgreSQL-adatbázisok által támogatott forgatókönyvekről és korlátozásokról lásd a támogatási mátrixot.
Backup-tároló létrehozása
A Backup-tároló egy tároló entitás az Azure-ban. Ez az Azure Backup által támogatott új számítási feladatok biztonsági mentési adatait tárolja. Ilyenek például az Azure Database for PostgreSQL-kiszolgálók, a tárfiókban lévő blobok és az Azure Disks. A biztonsági mentési tárolók segítenek a biztonsági mentési adatok rendszerezésében, miközben minimalizálják a felügyeleti többletterhelést. A biztonsági mentési tárolók az Azure Azure Resource Manager-modelljén alapulnak, amely továbbfejlesztett képességeket biztosít a biztonsági mentési adatok védelméhez.
A Backup-tároló létrehozása előtt válassza ki a tárolón belüli adatok tárolóredundanciát. Ezután hozza létre a Backup-tárolót ezzel a tárredundanciával és a helyével.
Ebben a cikkben létrehozunk egy TestBkpVault biztonsági mentési tárolót a Westus régióban, a testBkpVaultRG erőforráscsoport alatt. A Backup-tároló létrehozásához használja az az dataprotection vault create parancsot. További információ a Backup-tárolók létrehozásáról.
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": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
"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"
}
A tároló létrehozása után hozzunk létre egy biztonsági mentési szabályzatot az Azure PostgreSQL-adatbázisok védelméhez.
Biztonsági mentési szabályzat létrehozása
A PostGreSQL biztonsági mentési szabályzatának ismertetése
Bár a lemezes biztonsági mentés naponta több biztonsági mentést is biztosít, és a blobok biztonsági mentése folyamatos biztonsági mentés eseményindító nélkül, a PostgreSQL biztonsági mentése archív védelmet nyújt. Az elsőként a tárolóba küldött biztonsági mentési adatok ezután áthelyezhetők az archív szintre egy meghatározott szabály vagy életciklus szerint. Ebben a kontextusban tekintsük át a PostgreSQL biztonsági mentési szabályzat objektumát.
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (Ebben az esetben teljes adatbázis biztonsági mentése)
- Initial Datastore (Hol lesznek a biztonsági másolatok kezdetben)
- Trigger (A biztonsági mentés aktiválása)
- Ütemezés alapján
- Alapértelmezett címkézési feltételek (az összes ütemezett biztonsági mentés alapértelmezett címkéje). Ez a címke a biztonsági másolatokat az adatmegőrzési szabályhoz csatolja)
- BackupParameter
- Alapértelmezett adatmegőrzési szabály (A kezdeti adattárban alapértelmezés szerint az összes biztonsági mentésre alkalmazott szabály)
- BackupRule
Ez az objektum tehát meghatározza, hogy milyen típusú biztonsági mentések aktiválódnak, hogyan aktiválódnak (ütemezéssel), mivel vannak megjelölve, hol vannak (adattárak), és hogy milyen életciklussal rendelkeznek a biztonsági mentési adatok egy adattárban. A PostgreSQL alapértelmezett PowerShell-objektuma azt mondja, hogy minden héten aktiváljon egy teljes biztonsági mentést, és elérik a tárolót, ahol három hónapig tárolják őket.
Ha hozzá szeretné adni az archív szintet a szabályzathoz, el kell döntenie, hogy mikor helyezi át az adatokat a tárolóból az archiválásba, mennyi ideig maradnak az adatok az archívumban, és hogy az ütemezett biztonsági másolatok közül melyik legyen archiválható. Ezért hozzá kell adnia egy adatmegőrzési szabályt, amely meghatározza a biztonsági mentési adatok életciklusát a tárolóadattárból az archiválási adattárba, és hogy mennyi ideig maradnak az archív adattárban. Ezután hozzá kell adnia egy címkét, amely megjelöli az ütemezett biztonsági másolatokat archiválásra jogosultként.
Az eredményül kapott PowerShell-objektum a következő:
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (Ebben az esetben teljes adatbázis biztonsági mentése)
- Initial Datastore (Hol lesznek a biztonsági másolatok kezdetben)
- Trigger (A biztonsági mentés aktiválása)
- Ütemezés alapján
- Alapértelmezett címkézési feltételek (az összes ütemezett biztonsági mentés alapértelmezett címkéje). Ez a címke a biztonsági másolatokat az adatmegőrzési szabályhoz csatolja)
- Új címkézési feltételek az új adatmegőrzési szabályhoz, amelynek neve "X"
- BackupParameter
- Alapértelmezett adatmegőrzési szabály (A kezdeti adattárban alapértelmezés szerint az összes biztonsági mentésre alkalmazott szabály)
- "X" nevű új adatmegőrzési szabály
- Életciklus
- Forrásadattár
- Törlés idő után a forrásadattárban
- Másolás céladattárba
- Életciklus
- BackupRule
A szabályzatsablon lekérése
Az Azure PostgreSQL-adatbázis biztonsági mentési szabályzatának belső összetevőinek megismeréséhez kérje le a szabályzatsablont az az dataprotection backup-policy get-default-policy-template paranccsal. Ez a parancs egy alapértelmezett szabályzatsablont ad vissza egy adott adatforrástípushoz. Ezzel a szabályzatsablonnal új szabályzatot hozhat létre.
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"
}
]
}
A szabályzatsablon egy eseményindítóból (amely dönti el, hogy mi aktiválja a biztonsági mentést) és egy életciklusból (amely dönti el, hogy mikor kell törölni/másolni/áthelyezni a biztonsági mentést). Az Azure PostgreSQL-adatbázis biztonsági mentésében az eseményindító alapértelmezett értéke egy ütemezett heti eseményindító (hét naponta egy biztonsági mentés), és az egyes biztonsági másolatok három hónapig történő megőrzése.
Ütemezett eseményindító:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Alapértelmezett adatmegőrzési szabály életciklusa:
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
A szabályzatsablon módosítása
Fontos
Az Azure PowerShellben az objektumok átmeneti helyként használhatók az összes módosítás végrehajtásához. Az Azure CLI-ben fájlokat kell használnunk, mivel az objektumok fogalma nem létezik. Minden szerkesztési műveletet át kell irányítani egy új fájlba, ahol a rendszer beolvassa a tartalmat a bemeneti fájlból, és újra átirányítja a kimeneti fájlba. Később szükség szerint átnevezheti a fájlt egy szkript használata közben.
Az ütemezés módosítása
Az alapértelmezett szabályzatsablon hetente egyszer nyújt biztonsági másolatot. Módosíthatja a biztonsági mentés ütemezését úgy, hogy hetente több napig történjen. Az ütemezés módosításához használja az az dataprotection backup-policy trigger set parancsot.
Az alábbi példa módosítja a heti biztonsági mentést, hogy minden hét minden vasárnapján, szerdán és pénteken készítsen biztonsági másolatot. Az ütemezési dátumtömb a dátumokat említi, a hét napjait pedig a hét napjaiként veszi fel. Azt is meg kell adnia, hogy ezek az ütemezések hetente ismétlődjenek. Az ütemezési időköz tehát 1 , az intervallum típusa pedig heti.
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
Új adatmegőrzési szabály hozzáadása
Ha hozzá szeretné adni az archív védelmet, módosítania kell a szabályzatsablont az alábbiak szerint.
Az alapértelmezett sablon az alapértelmezett adatmegőrzési szabály szerint a kezdeti adattár életciklusával rendelkezik. Ebben a forgatókönyvben a szabály azt mondja, hogy három hónap után törölje a biztonsági mentési adatokat. Adjon hozzá egy új adatmegőrzési szabályt, amely meghatározza, hogy az adatok mikor kerülnek át az archivált adattárba, vagyis a biztonsági mentési adatok először archivált adattárba lesznek másolva, majd törlődnek a tárolóadattárban. A szabálynak azt is meg kell határoznia, hogy az adatok mennyi ideig legyenek tárolva az archív adattárban. Az az dataprotection backup-policy retention-rule create-lifecycle paranccsal új életciklusokat hozhat létre, és az az dataprotection backup-policy retention-rule set paranccsal társíthatja őket az új szabályokhoz vagy a meglévő szabályokhoz.
Az alábbi példa létrehoz egy Havi nevű új adatmegőrzési szabályt, amelyben minden hónap első sikeres biztonsági mentését hat hónapig meg kell őrizni a tárolóban, át kell helyezni az archív szintre, és 24 hónapig archívumszinten kell tartani.
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
Címke és a vonatkozó feltételek hozzáadása
Miután létrejött egy adatmegőrzési szabály, létre kell hoznia egy megfelelő címkét a Biztonsági mentési szabályzat Trigger tulajdonságában. Az az dataprotection backup-policy tag create-absolute-criteria paranccsal hozzon létre egy új címkézési feltételeket, és az az dataprotection backup-policy tag set paranccsal frissítse a meglévő címkét, vagy hozzon létre egy új címkét.
Az alábbi példa egy új címkét hoz létre a feltételekkel együtt, amely a hónap első sikeres biztonsági mentése. A címke neve megegyezik az alkalmazandó megőrzési szabály nevével.
Ebben a példában a címkefeltételek neve Havi.
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
Tegyük fel, hogy ha az ütemezés hetente több biztonsági mentést tartalmaz (minden vasárnap, szerdán, csütörtökön a fenti példában meghatározottak szerint), és archiválni szeretné a vasárnapi és a pénteki biztonsági mentéseket, akkor a címkézési feltételek az alábbi módon módosíthatók az az dataprotection backup-policy tag create-generic-criteria paranccsal.
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
Új PostgreSQL biztonsági mentési szabályzat létrehozása
Miután a sablon a követelményeknek megfelelően módosult, az az dataprotection backup-policy create paranccsal hozzon létre egy szabályzatot a módosított sablonnal.
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Biztonsági mentés konfigurálása
A tároló és a szabályzat létrehozása után három kritikus pontot kell figyelembe vennie az Azure PostgreSQL-adatbázisok védelméhez.
Érintett főbb entitások
Védeni kívánt PostGreSQL-adatbázis
Kérje le a PostgreSQL Azure Resource Manager-azonosítóját (ARM-azonosítóját) a védelemhez. Ez az adatbázis azonosítójaként szolgál. Egy empdb11 nevű adatbázist fogunk használni egy PostgreSQL-kiszolgáló testposgresql-ben, amely egy másik előfizetésben található az ossrg erőforráscsoportban.
Az alábbi példa basht használ.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Azure Key Vault
Az Azure Backup szolgáltatás nem tárolja a felhasználónevet és a jelszót a PostgreSQL-adatbázishoz való csatlakozáshoz. Ehelyett a biztonsági mentési rendszergazdának be kell vetnie a kulcsokat a kulcstartóba. Ezután a Backup szolgáltatás hozzáfér a kulcstartóhoz, felolvassa a kulcsokat, majd hozzáfér az adatbázishoz. Jegyezze fel a megfelelő kulcs titkos azonosítóját.
Az alábbi példa basht használ.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Biztonsági mentési tár
A Biztonsági mentési tárolónak csatlakoznia kell a PostgreSQL-kiszolgálóhoz, majd a kulcstartóban található kulcsokkal kell elérnie az adatbázist. Ezért hozzá kell férnie a PostgreSQL-kiszolgálóhoz és a kulcstartóhoz. A hozzáférés a Backup-tároló felügyeltszolgáltatás-identitásához (MSI) érhető el.
Tekintse meg azokat az engedélyeket , amelyeket a Backup-tároló felügyeltszolgáltatás-identitásának (MSI) kell megadnia a PostgreSQL-kiszolgálón és az Azure Key Vaulton, amely az adatbázis kulcsait tárolja.
A kérés előkészítése
Az összes vonatkozó engedély beállítása után a biztonsági mentés konfigurálása két lépésben történik.
- A vonatkozó kérést a vonatkozó tároló, szabályzat, PostgreSQL-adatbázis használatával készítjük elő az az dataprotection backup-instance initialize paranccsal.
- Az adatbázis védelmére vonatkozó kérést az az dataprotection backup-instance create paranccsal küldjük el .
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
Igény szerinti biztonsági mentések futtatása
A biztonsági mentés indításakor meg kell adnia egy adatmegőrzési szabályt. A házirend megőrzési szabályainak megtekintéséhez navigáljon a szabályzat JSON-fájljában a megőrzési szabályokhoz. Az alábbi példában két megőrzési szabály található Alapértelmezett és Havi névvel. Az igény szerinti biztonsági mentéshez a Havi szabályt fogjuk használni.
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"
}
Igény szerinti biztonsági mentés indításához használja az az dataprotection backup-instance adhoc-backup parancsot.
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Feladatok nyomon követése
Kövesse nyomon az összes feladatot az az dataprotection feladatlista paranccsal. Listázhatja az összes feladatot, és lekérhet egy adott feladatrészletet.
Az Az.ResourceGraph használatával az összes feladat nyomon követhető az összes Backup-tárolóban. Az az dataprotection job list-from-resourcegraph paranccsal lekérheti a Backup-tárolókban található releváns feladatokat.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed