Megosztás a következőn keresztül:


PostgreSQL-adatbázisok visszaállítása az Azure CLI használatával

Ez a cikk azt ismerteti, hogyan állíthatja vissza a PostgreSQL-adatbázisokat az Azure CLI használatával egy Azure Database for PostgreSQL-kiszolgálóra , amelyről az Azure Backupon keresztül biztonsági másolatot készít. A PostgreSQL-adatbázisokat az Azure Portal, az Azure PowerShell és a REST API használatával is visszaállíthatja.

Mivel a PostgreSQL-adatbázis szolgáltatásként nyújtott platform (PaaS) adatbázis, a Original-Location Helyreállítási (OLR) beállítás nem támogatott a meglévő adatbázis lecserélésével (ahonnan a biztonsági másolatokat készítették). A helyreállítási pontról visszaállítva létrehozhat egy új adatbázist ugyanabban az Azure Database for PostgreSQL-kiszolgálón vagy bármely más PostgreSQL-kiszolgálón. Ezt a lehetőséget Alternate-Location Recovery (ALR) néven nevezzük. Az ALR segít megőrizni a forrásadatbázist és a visszaállított (új) adatbázist is.

A cikkben szereplő példák az erőforráscsoport alatt elnevezett TestBkpVault meglévő Backup-tárolóra vonatkoznak testBkpVaultRG.

Biztonsági másolatban létrehozott PostgreSQL-adatbázis visszaállítása

Engedélyek beállítása

A Backup-tárolók felügyelt identitással férnek hozzá más Azure-erőforrásokhoz. A biztonsági mentésből való visszaállításhoz a Backup-tároló felügyelt identitásához engedélykészlet szükséges azon az Azure Database for PostgreSQL-kiszolgálón, amelyre az adatbázist vissza kell állítani.

Ha a tároló rendszer által hozzárendelt felügyelt identitásának megfelelő engedélyeket szeretne hozzárendelni a cél PostgreSQL-kiszolgálón, tekintse meg a PostgreSQL-adatbázisok biztonsági mentéséhez szükséges engedélyeket.

Ha fájlként szeretné visszaállítani a helyreállítási pontot egy tárfiókba, a Backup-tároló rendszer által hozzárendelt felügyelt identitásának hozzáférésre van szüksége a céltárfiókhoz.

A megfelelő helyreállítási pont lekérése

A tárolón belüli összes biztonsági mentési példány listázásához használja a az dataprotection backup-instance list parancsot. A az dataprotection backup-instance show parancs használatával kérje le a megfelelő példányt.

A nagy léptékű forgatókönyvek esetében a következő paranccsal listázhatja a biztonsági mentési példányokat a tárolókban és az az dataprotection backup-instance list-from-resourcegraph előfizetésekben:

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL -subscriptions "xxxxxxxx-xxxx-xxxx-xxxx"

  {
    "datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
    "extendedLocation": null,
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "identity": null,
    "kind": "",
    "location": "",
    "managedBy": "",
    "name": "testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "plan": null,
    "properties": {
      "currentProtectionState": "ProtectionConfigured",
      "dataSourceInfo": {
        "baseUri": null,
        "datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
        "objectType": "Datasource",
        "resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
        "resourceLocation": "westus",
        "resourceName": "postgres",
        "resourceProperties": null,
        "resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
        "resourceUri": ""
      },
      "dataSourceProperties": null,
      "dataSourceSetInfo": {
        "baseUri": null,
        "datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
        "objectType": "DatasourceSet",
        "resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql",
        "resourceLocation": "westus",
        "resourceName": "testpostgresql",
        "resourceProperties": null,
        "resourceType": "Microsoft.DBforPostgreSQL/servers",
        "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/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/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": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tags": null,
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "microsoft.dataprotection/backupvaults/backupinstances",
    "vaultName": "testBkpVault",
    "zones": null
  }
.
.
.
.
.

A példány azonosítása után kérje le a megfelelő helyreállítási pontot a az dataprotection recovery-point list következő paranccsal:

az dataprotection recovery-point list --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -g testBkpVaultRG --vault-name TestBkpVault

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"
}

Ha le kell kérnie a helyreállítási pontot az archív szintről, a type változó a recoveryPointDataStoreDetailsArchiveStore.

A visszaállítási kérelem előkészítése

A PostgreSQL-adatbázisokhoz különböző visszaállítási lehetőségek állnak rendelkezésre. A helyreállítási pontot visszaállíthatja egy másik adatbázisként, vagy visszaállíthatja fájlként. A helyreállítási pont az archív szinten is lehet.

Adatbázisként visszaállítani

Hozza létre az új PostgreSQL-adatbázis Azure Resource Manager-azonosítóját azzal a cél PostgreSQL-kiszolgálóval, amelyhez engedélyeket rendelt. Emellett hozza létre a szükséges PostgreSQL-adatbázisnevet is. Egy PostgreSQL-adatbázis például egy másik előfizetéssel rendelkező erőforráscsoportban emprestored21 elnevezett targetossserver cél PostgreSQL-kiszolgáló alatt nevezhető eltargetrg:

$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"

az dataprotection backup-instance restore initialize-for-data-recovery A paranccsal készítse elő a visszaállítási kérést az összes releváns részlettel:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL  --restore-location {location} --source-datastore VaultStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" > OssRestoreReq.JSON

Egy archív alapú helyreállítási ponthoz szüksége van a következőkre:

  1. Rehidratálás az archív adattárból a tárolóadattárba.
  2. Módosítsa a forrásadattárat.
  3. Adjon hozzá további paramétereket a rehidratálási prioritás megadásához.
  4. Adja meg azt az időtartamot, amelyre a rehidratált helyreállítási pontot meg kell őrizni a tárolóadattárban.
  5. Állítsa vissza az adatbázist ebből a helyreállítási pontból.

A következő paranccsal egyszerre készítse elő a kérést az összes korábban említett művelethez:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL  --restore-location {location} --source-datastore ArchiveStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" --rehydration-priority Standard --rehydration-duration 12 > OssRestoreFromArchiveReq.JSON

Visszaállítás fájlokként

Kérje le annak a tárolónak az URI-ját a tárfiókban , amelyhez engedélyeket rendelt. Az alábbi példa egy másik előfizetéssel rendelkező tárfiók alatt elnevezett testcontainerrestoretestossstorageaccount tárolót használ:

$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"

az dataprotection backup-instance restore initialize-for-data-recovery-as-files A paranccsal készítse elő a visszaállítási kérést az összes releváns részlettel:

az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL  --restore-location {location} --source-datastore VaultStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a > OssRestoreAsFilesReq.JSON

Az archív helyreállítási pont esetében a következő szkriptben:

  • Módosítsa a forrásadattárat.
  • Adja hozzá a rehidratálási prioritást és a rehidratált helyreállítási pont megőrzési időtartamát napokban.
az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL  --restore-location {location} --source-datastore ArchiveStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a --rehydration-priority Standard --rehydration-duration 12 > OssRestoreAsFilesReq.JSON

Annak ellenőrzéséhez, hogy a JSON-fájl sikeres lesz-e új erőforrások létrehozásában, használja a az dataprotection backup-instance validate-for-restore parancsot.

A visszaállítás indítása

az dataprotection backup-instance restore trigger A paranccsal aktiválhatja a visszaállítási műveletet a korábban előkészített kéréssel:

az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --restore-request-object OssRestoreReq.JSON

Feladatok nyomon követése

A parancs használatával nyomon követheti a az dataprotection job list feladatokat. Listázhatja az összes feladatot, és lekérhet egy adott feladatrészletet.

A feladatok nyomon követésére is használható Az.ResourceGraph az összes Backup-tárolóban. az dataprotection job list-from-resourcegraph A parancs használatával lekérheti az összes Backup-tárolóban található megfelelő feladatot:

az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore