Compartir a través de


Creación de directivas de copia de seguridad de Azure Data Protection para Azure Database for PostgreSQL: servidores flexibles mediante la API REST

En este artículo se describe cómo crear la directiva de copia de seguridad para proteger los servidores flexibles de Azure PostgreSQL mediante la API REST.

Normalmente, una directiva de copia de seguridad rige la retención y la programación de las copias de seguridad.

Puede reutilizar una directiva de copia de seguridad existente para configurar la copia de seguridad de servidores flexibles de PostgreSQL en un almacén o crear una directiva de copia de seguridad para un almacén de Azure Recovery Services mediante la API REST.

Información sobre la directiva de copia de seguridad de PostgreSQL

Antes de empezar a crear la directiva de copia de seguridad, obtenga información sobre el objeto de directiva de copia de seguridad para PostgreSQL:

  • Regla de directiva
    • Regla de copia de seguridad
      • BackupParameter
      • Tipo de copia de seguridad (una copia de seguridad completa de la base de datos en este caso)
      • Almacén de datos inicial (al que llegarán inicialmente las copias de seguridad)
      • Desencadenador (cómo se desencadena la copia de seguridad)
      • Basada en una programación
      • Criterios de etiquetado predeterminados (una "etiqueta" predeterminada para todas las copias de seguridad programadas. Esta etiqueta vincula las copias de seguridad a la regla de retención)
    • Regla de retención predeterminada (regla que se aplicará a todas las copias de seguridad, de forma predeterminada, en el almacén de datos inicial)

Este objeto define el tipo de copias de seguridad que se desencadenan, la forma en que se desencadenan (a través de una programación), las etiquetas marcadas para la operación de copia de seguridad, la ruta de acceso donde se almacenan las copias de seguridad (un almacén de datos) y el ciclo de vida de los datos de copia de seguridad en un almacén de datos. El objeto predeterminado de PowerShell para PostgreSQL - Flexible Servers realiza una copia de seguridad completa cada semana, almacena las copias de seguridad en el almacén y las conserva durante tres meses.

Crear una directiva de copia de seguridad

Para crear una directiva de Azure Backup, use la siguiente operación PUT:

Importante

Actualmente, no se admite la actualización o modificación de una directiva existente. Una alternativa es crear una directiva con los detalles necesarios y asignarla a la instancia de copia de seguridad correspondiente.

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

Los valores de {policyName} y {vaultName} se proporcionan en el URI. Se proporciona información adicional en el cuerpo de la solicitud.

Creación del cuerpo de la solicitud

Por ejemplo, para crear una directiva para la copia de seguridad de servidores flexibles de Azure Database for PostgreSQL, el cuerpo de la solicitud necesita los siguientes componentes:

Nombre Obligatorio Tipo Descripción
propiedades Cierto BaseBackupPolicy:BackupPolicy BaseBackupPolicyResource properties

Para obtener una lista completa de las definiciones del cuerpo de la solicitud, consulte el documento de la API REST de directivas de copia de seguridad.

Cuerpo de solicitud de ejemplo

La directiva dice que:

  • Está programado para desencadenar la copia de seguridad semanal y elegir la hora de inicio (Hora + P1W).
  • El almacén de datos es el almacén, ya que las copias de seguridad se transfieren directamente al almacén.
  • Las copias de seguridad se conservan en la bóveda durante tres meses (P3M).
	"properties": {
	  "datasourceTypes": [
		"Microsoft.DBforPostgreSQL/flexibleServers"
	  ],
	  "name": "PgFlexPolicy1",
	  "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"
		}
	  ]
	}
}

Importante

Los formatos de hora admiten DateTime; solo no se admite Time. La hora del día indica la hora de inicio de la copia de seguridad y no la hora en que se completa la copia de seguridad.

Vamos a actualizar la plantilla JSON anterior con un cambio: copias de seguridad en varios días de la semana.

En el ejemplo siguiente se modifica la copia de seguridad semanal para realizar copias de seguridad cada domingo, miércoles y viernes de cada semana. La matriz de fechas de programación menciona las fechas, y estas se consideran 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 semanal.

Desencadenador programado:

"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"
		}

Si desea agregar otra regla de retención, modifique el JSON de la directiva de la siguiente manera:

El código JSON anterior tiene un ciclo de vida para el almacén de datos inicial según la regla de retención predeterminada. En este escenario, la regla menciona la eliminación de los datos de copia de seguridad después de tres meses. Puede agregar una nueva regla de retención que defina una duración de retención más larga de 6 meses para las primeras copias de seguridad realizadas al principio de cada mes. Vamos a asignar un nombre a esta nueva regla como Mensual.

Ciclo de vida de retención:

{
  "isDefault": true,
  "lifecycles": [
	{
	  "deleteAfter": {
		"duration": "P3M",
		"objectType": "AbsoluteDeleteOption"
	  },
	  "sourceDataStore": {
		"dataStoreType": "VaultStore",
		"objectType": "DataStoreInfoBase"
	  },
	  "targetDataStoreCopySettings": []
	}
  ],
  "name": "Default",
  "objectType": "AzureRetentionRule"
},
{
	"lifecycles": [
		{
			"deleteAfter": {
				"objectType": "AbsoluteDeleteOption",
				"duration": "P6M"
			},
			"targetDataStoreCopySettings": [],
			"sourceDataStore": {
				"dataStoreType": "VaultStore",
				"objectType": "DataStoreInfoBase"
			}
		}
	],
	"isDefault": false,
	"name": "Monthly",
	"objectType": "AzureRetentionRule"
}

Cada vez que agregue una regla de retención, debe agregar una etiqueta correspondiente en la propiedad Trigger de la directiva. En el ejemplo siguiente se crea una nueva etiqueta junto con los criterios (la primera copia de seguridad correcta del mes) con el mismo nombre que la regla de retención correspondiente que se va a aplicar.

En este ejemplo, el criterio de la etiqueta debería denominarse Mensual.

Criterios de etiquetado:

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

Después de incluir todos los cambios, el código JSON de la directiva tendrá un aspecto similar al siguiente:

{
	"properties": {
	  "datasourceTypes": [
		"Microsoft.DBforPostgreSQL/flexibleServers"
	  ],
	  "name": "PgFlexPolicy1",
	  "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"
		},
		{
			"lifecycles": [
				{
					"deleteAfter": {
						"objectType": "AbsoluteDeleteOption",
						"duration": "P6M"
					},
					"targetDataStoreCopySettings": [],
					"sourceDataStore": {
						"dataStoreType": "VaultStore",
						"objectType": "DataStoreInfoBase"
					}
				}
			],
			"isDefault": false,
			"name": "Monthly",
			"objectType": "AzureRetentionRule"
		}
	  ]
	}
}

Para más información sobre la creación de directivas, consulte el documento Directiva de copia de seguridad de la base de datos postgreSQL.

Respuestas

La creación o actualización de la directiva de copia de seguridad es una operación sincrónica y devuelve OK una vez que la operación se realiza correctamente.

Nombre Tipo Descripción
200 Ok BaseBackupPolicyResource De acuerdo

Respuestas de ejemplo:

Una vez completada la operación, devuelve 200 (OK) con el contenido de la directiva en el cuerpo de respuesta.

{
  "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": "Default",
				"id": "Default_"
			  },
			  "taggingPriority": 99,
			  "isDefault": true
			},
			{
			  "tagInfo": {
				"tagName": "Monthly",
				"id": "Monthly_"
			  },
			  "taggingPriority": 15,
			  "isDefault": false,
			  "criteria": [
				{
				  "absoluteCriteria": [
					"FirstOfMonth"
				  ],
				  "objectType": "ScheduleBasedBackupCriteria"
				}
			  ]
			}
		  ],
		  "objectType": "ScheduleBasedTriggerContext"
		},
		"dataStore": {
		  "dataStoreType": "VaultStore",
		  "objectType": "DataStoreInfoBase"
		},
		"name": "BackupWeekly",
		"objectType": "AzureBackupRule"
	  },
	  {
		"lifecycles": [
		  {
			"deleteAfter": {
			  "objectType": "AbsoluteDeleteOption",
			  "duration": "P3M"
			},
			"targetDataStoreCopySettings": [],
			"sourceDataStore": {
			  "dataStoreType": "VaultStore",
			  "objectType": "DataStoreInfoBase"
			}
		  }
		],
		"isDefault": true,
		"name": "Default",
		"objectType": "AzureRetentionRule"
	  },
	  {
		"lifecycles": [
		  {
			"deleteAfter": {
			  "objectType": "AbsoluteDeleteOption",
			  "duration": "P6M"
			},
			"targetDataStoreCopySettings": [],
			"sourceDataStore": {
			  "dataStoreType": "VaultStore",
			  "objectType": "DataStoreInfoBase"
			}
		  }
		],
		"isDefault": false,
		"name": "Monthly",
		"objectType": "AzureRetentionRule"
	  }
	],
	"datasourceTypes": [
	  "Microsoft.DBforPostgreSQL/flexibleServers"
	],
	"objectType": "BackupPolicy"
  },
  "id": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/PGFlexIntegration/providers/Microsoft.DataProtection/BackupVaults/PgFlexTestVault/backupPolicies/PgFlexPolicy1",
  "name": "PgFlexPolicy1",
  "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

Pasos siguientes

Habilite la protección para Azure Database for PostgreSQL: servidor flexible mediante la API REST.

Para más información sobre las API rest de Azure Backup, consulte los artículos siguientes: