Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo realizar copias de seguridad de bases de datos PostgreSQL en Azure Virtual Machines mediante la CLI de Azure. También puede configurar la copia de seguridad mediante Azure Portal, Azure PowerShell y la API REST para bases de datos postgreSQL.
Obtenga más información sobre los escenarios admitidos y las preguntas más frecuentes sobre la copia de seguridad de Azure Database for PostgreSQL.
Creación de un almacén de Backup
Un almacén de Backup es una entidad de almacenamiento en Azure. Almacena los datos de copia de seguridad de las nuevas cargas de trabajo compatibles con Azure Backup, como servidores de Azure Database for PostgreSQL, blobs en una cuenta de almacenamiento y discos de Azure. Los almacenes de Backup facilitan la tarea de organizar los datos de copia de seguridad, al mismo tiempo que reducen al mínimo la sobrecarga administrativa. Los almacenes de copias de seguridad se basan en el modelo de Azure Resource Manager de Azure, que proporciona características para proteger los datos de las copias de seguridad.
Antes de crear un almacén de copia de seguridad, elija la redundancia del almacenamiento de los datos dentro del almacén. Después, continúe con la creación del almacén de copia de seguridad con esa redundancia de almacenamiento y la ubicación.
En este artículo, creará un almacén de Backup con el nombre TestBkpVault
, en la región westus
, en el grupo de recursos testBkpVaultRG
. Use el comando az dataprotection vault create
para crear un almacén de Backup.
Obtenga más información sobre cómo crear un almacén de 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"
}
Crear una directiva de copia de seguridad
Después de crear un almacén, puede crear una directiva de copia de seguridad para ayudar a proteger las bases de datos postgreSQL. También puede crear una directiva de copia de seguridad para bases de datos postgreSQL mediante la API REST.
Descripción de la directiva de copia de seguridad de PostgreSQL
Mientras que la copia de seguridad en disco ofrece varias copias de seguridad al día y la copia de seguridad de blobs es una copia de seguridad continua sin desencadenador, la copia de seguridad de PostgreSQL ofrece protección de archivo. Los datos de copia de seguridad que se envían primero al almacén pueden trasladarse al nivel de archivo de acuerdo con una regla definida o un ciclo de vida.
En este contexto, la siguiente jerarquía puede ayudarle a comprender el objeto de directiva de copia de seguridad para PostgreSQL:
- Regla de directivas
- Regla de copia de seguridad
- Parámetro de copia de seguridad
- Tipo de copia de seguridad (una copia de seguridad completa de la base de datos en este caso)
- Almacén de datos inicial (donde las copias de seguridad llegan inicialmente)
- Desencadenador (cómo se desencadena la copia de seguridad)
- Programación
- Criterios de etiquetado predeterminados (una etiqueta predeterminada que vincula todas las copias de seguridad programadas a la regla de retención)
- Parámetro de copia de seguridad
- Regla de retención predeterminada (una regla que se aplica a todas las copias de seguridad, de forma predeterminada, en el almacén de datos inicial)
- Regla de copia de seguridad
El objeto de directiva define con qué tipos de copias de seguridad se desencadenan, cómo se desencadenan (a través de una programación), con qué se etiquetan, dónde llegan (un almacén de datos) y el ciclo de vida de sus datos en un almacén de datos.
El objeto de PowerShell predeterminado para PostgreSQL dice que desencadena una copia de seguridad completa cada semana. Las copias de seguridad llegan al almacén, donde se almacenan durante tres meses.
Si desea agregar el nivel de archivo a la directiva, debe decidir cuándo se moverán los datos del almacén al archivo, cuánto tiempo permanecerán los datos en el archivo y cuál de las copias de seguridad programadas se deben etiquetar como archivables. Debe agregar una regla de retención que defina el ciclo de vida de los datos de copia de seguridad del almacén de datos del almacén al almacén de datos de archivo. La regla de retención también define cuánto tiempo permanecerán los datos de copia de seguridad en el almacén de datos de archivo. A continuación, debe agregar una etiqueta que marque las copias de seguridad programadas como aptas para archivarse.
El objeto de PowerShell resultante es el siguiente:
- Regla de directivas
- Regla de copia de seguridad
- Parámetro de copia de seguridad
- Tipo de copia de seguridad (una copia de seguridad completa de la base de datos en este caso)
- Almacén de datos inicial (donde las copias de seguridad llegan inicialmente)
- Desencadenador (cómo se desencadena la copia de seguridad)
- Programación
- Criterios de etiquetado predeterminados (una etiqueta predeterminada que vincula todas las copias de seguridad programadas a la regla de retención)
- Nuevos criterios de etiquetado para la nueva regla de retención con el mismo nombre
- Parámetro de copia de seguridad
- Regla de retención predeterminada (una regla que se aplica a todas las copias de seguridad, de forma predeterminada, en el almacén de datos inicial)
- Nueva regla de retención
- Ciclo vital
- Almacén de datos de origen
- Período de tiempo para la eliminación en el almacén de datos de origen
- Copia en el almacén de datos de destino
- Ciclo vital
- Regla de copia de seguridad
Recuperación de la plantilla de directiva
Para comprender los componentes internos de una directiva de copia de seguridad para la copia de seguridad de la base de datos de PostgreSQL, recupere la plantilla de directiva mediante el az dataprotection backup-policy get-default-policy-template
comando . Este comando devuelve la plantilla de directiva predeterminada para un tipo de origen de datos. Use esta plantilla de políticas para crear una nueva política.
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"
}
]
}
La plantilla de directiva consta de un desencadenador (que decide qué desencadena la copia de seguridad) y un ciclo de vida (que decide cuándo eliminar, copiar o mover la copia de seguridad). En una copia de seguridad de base de datos postgreSQL, el valor predeterminado del desencadenador es un desencadenador semanal programado (una copia de seguridad cada siete días). Cada copia de seguridad se conserva durante tres meses.
Desencadenador programado
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Ciclo de vida predeterminado para la regla de detención
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Modificación de la plantilla de directiva
En Azure PowerShell, puede usar objetos como ubicaciones de almacenamiento provisional para realizar todas las modificaciones. En la CLI de Azure, debe usar archivos, ya que no hay ninguna noción de objetos. Cada operación de edición debe redirigirse a un nuevo archivo, donde el contenido se lee desde el archivo de entrada y se redirige al archivo de salida. Más adelante puede cambiar el nombre del archivo según sea necesario mientras lo usa en un script.
Modificación de la programación
La plantilla de directiva predeterminada ofrece una copia de seguridad una vez por semana. Puede modificar la programación para que la copia de seguridad se realice varios días a la semana. Para modificar la programación, use el az dataprotection backup-policy trigger set
comando .
En el ejemplo siguiente se modifica la copia de seguridad semanal a domingo, miércoles y viernes de cada semana. La matriz de fechas de programación menciona las fechas, y los días de la semana para esas fechas se toman como días de la semana. También debe especificar que estas programaciones se repitan cada semana. Por lo tanto, el intervalo de programación es 1
y el tipo de intervalo es 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
Adición de una nueva regla de retención
Si desea agregar protección de archivo, debe modificar la plantilla de directiva.
La plantilla predeterminada tiene un ciclo de vida para el almacén de datos inicial en la regla de retención predeterminada. En este escenario, la regla indica que se eliminarán los datos de copia de seguridad después de tres meses. Debe agregar una nueva regla de retención que defina cuándo se mueven los datos al almacén de datos de archivo. Es decir, los datos de copia de seguridad se copian primero en el almacén de datos de archivo y luego se eliminan en el almacén de datos del almacén.
Además, la regla debe definir cuánto tiempo se conservan los datos en el almacén de datos de archivo. Para crear nuevos ciclos de vida, use el az dataprotection backup-policy retention-rule create-lifecycle
comando . Para asociar esos ciclos de vida a reglas nuevas o existentes, use el az dataprotection backup-policy retention-rule set
comando .
En el ejemplo siguiente se crea una nueva regla de retención denominada Monthly
. En esta regla, la primera copia de seguridad correcta de cada mes se conserva en el almacén durante seis meses, se mueve al nivel de archivo y se mantiene en el nivel de archivo durante 24 meses.
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
Agregue una etiqueta y los criterios pertinentes
Después de crear una regla de retención, debe crear una etiqueta correspondiente en la Trigger
propiedad de la directiva de copia de seguridad. Para crear nuevos criterios de etiquetado, use el az dataprotection backup-policy tag create-absolute-criteria
comando . Para actualizar la etiqueta existente o crear una nueva etiqueta, use el az dataprotection backup-policy tag set
comando .
En el siguiente ejemplo se crea una nueva etiqueta junto con los criterios, que es la primera copia de seguridad correcta del mes. La etiqueta tiene el mismo nombre que la regla de retención correspondiente que se aplicará.
En este ejemplo, los criterios de etiqueta se denominan 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
Si la programación es de varias copias de seguridad por semana (todos los domingos, miércoles y jueves, como se especifica en el ejemplo anterior) y desea archivar las copias de seguridad de domingo y jueves, puede cambiar los criterios de etiquetado mediante el comando 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
Creación de una nueva directiva de copia de seguridad de PostgreSQL
Después de modificar la plantilla según los requisitos, use el az dataprotection backup-policy create
comando para crear una directiva mediante la plantilla modificada:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Configuración de la copia de seguridad
Después de crear la bóveda y la directiva, debe considerar tres puntos críticos para realizar una copia de seguridad de una base de datos PostgreSQL en Azure Database for PostgreSQL.
Descripción de las entidades clave
Base de datos PostgreSQL de la que hacer copia de seguridad
Obtener el ID del Resource Manager de la base de datos PostgreSQL de la que se va a realizar una copia de seguridad. Este identificador actúa como identificador de la base de datos. En el ejemplo siguiente se usa una base de datos denominada empdb11
bajo el servidor testposgresql
postgreSQL , que está presente en el grupo ossrg
de recursos en una suscripción diferente. En el ejemplo se usa Bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Almacén de claves
El servicio Azure Backup no almacena el nombre de usuario y la contraseña para conectarse a la base de datos de PostgreSQL. En su lugar, el administrador de copia de seguridad inicializa las claves en el almacén de claves. A continuación, el servicio Azure Backup accede al almacén de claves, lee las claves y accede a la base de datos.
En el ejemplo siguiente se usa Bash. Anote el identificador secreto de la clave pertinente.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Almacén de Backup
Un almacén de Backup tiene que conectarse al servidor de PostgreSQL y, a continuación, acceder a la base de datos a través de las claves presentes en el almacén de claves. Por lo tanto, el almacén de Backup requiere acceso al servidor postgreSQL y al almacén de claves. Se concede acceso a la identidad administrada del almacén de Backup.
Obtenga información sobre los permisos que debe conceder a la identidad administrada del almacén de Backup en el servidor postgreSQL y el almacén de claves que almacena las claves en la base de datos.
Preparación de la solicitud
Después de establecer todos los permisos pertinentes, realice la configuración de la copia de seguridad en dos pasos:
- Prepare la solicitud mediante el almacén, la directiva y la base de datos de PostgreSQL pertinentes en el comando
az dataprotection backup-instance initialize
. - Envíe la solicitud para realizar una copia de seguridad de la base de datos mediante el
az dataprotection backup-instance create
comando .
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
Ejecución de una copia de seguridad a petición
Debe especificar una regla de retención mientras desencadena la copia de seguridad. Para ver las reglas de retención en una directiva, examine el archivo JSON de directiva. En el ejemplo siguiente, hay dos reglas de retención con los nombres Default
y Monthly
. En este artículo se usa la Monthly
regla para la copia de seguridad a petición.
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"
}
Para desencadenar una copia de seguridad a petición, use el az dataprotection backup-instance adhoc-backup
comando :
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Seguimiento de trabajos
Realice un seguimiento de todos los trabajos mediante el az dataprotection job list
comando . Puede enumerar todos los trabajos y capturar un detalle de trabajo determinado.
También puede usar Az.ResourceGraph
para realizar un seguimiento de todos los trabajos en todos los almacenes de Backup. Use el comando az dataprotection job list-from-resourcegraph
para capturar los trabajos pertinentes en los almacenes de Backup:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
Contenido relacionado
- Restaure las bases de datos postgreSQL mediante la CLI de Azure.
- Restaure una base de datos postgreSQL mediante Azure Portal, Azure PowerShell y la API REST.