Descripción del registro de escritura previa
Cuando se realizan cambios en la base de datos, como INSERTS o DELETES, esos cambios se escriben primero en un registro y solo se escriben en archivos de datos en el disco. Esta operación se denomina registro de escritura anticipada, ya que los cambios se escriben en el registro, antes de confirmarlos en los archivos de datos. Si se produce un problema, como la pérdida de energía, el registro siempre contiene los datos más recientes y se puede usar para asegurarse de que la base de datos está en un estado coherente.
Una segunda ventaja es que, al escribir primero los cambios en el registro, los cambios en tablas e índices se pueden escribir en lotes, en lugar de hacerlo de manera individual. Este proceso reduce el número de escrituras de disco necesarias para mantener actualizadas las tablas y los índices. Las escrituras en el registro son rápidas porque se realizan de manera secuencial. Las escrituras más lentas en tablas e índices se pueden realizar de forma segura en lotes, ya que todos los datos se pueden recuperar del registro. En el caso de las cargas de trabajo que normalmente implican muchas actualizaciones pequeñas, se mejora el rendimiento.
Nota:
En el caso de las implementaciones locales de PostgreSQL, el archivo de registro se almacena en el directorio pg_wal. Azure Database for PostgreSQL no proporciona acceso al sistema de archivos, por lo que no es necesario preocuparse por el almacenamiento físico del archivo de registro.
Hay varios parámetros de servidor que permiten controlar cómo funciona el registro de escritura previa y optimizarlo para la carga de trabajo:
- commit_delay: retraso entre la confirmación de la transacción y el vaciado del registro en el disco.
- wal_buffers: número de búferes de páginas de disco en memoria compartida para el registro de escritura previa (WAL).
- max_wal_size: tamaño máximo para permitir que el WAL crezca antes de desencadenar un punto de comprobación automático.
- wal_writer_delay: intervalo de tiempo entre vaciados de WAL realizados por el escritor de WAL.
- wal_compression: indica si las escrituras de página completa en el archivo WAL se comprimen.
- wal_level: determina cuánta información se escribe en el WAL. Los valores permitidos son REPLICA o LOGICAL.
Restauración a un momento dado
El propósito principal del registro de escritura previa (WAL) es garantizar la coherencia y la durabilidad de la base de datos si se produce un bloqueo. La versión local de PostgreSQL permite usar el registro como archivo, lo que le permite restaurar a un momento dado mediante las opciones de configuración archive_mode y archive_command.
Azure Database for PostgreSQL es un servicio administrado, que no permite el acceso al sistema de archivos subyacente. Sin embargo, incluye copias de seguridad completas automáticas del servidor, incluidas todas las bases de datos. Esta copia de seguridad permite volver a crear los datos en un momento dado. Las copias de seguridad se programan automáticamente y se realizan una vez al día. Si necesita restaurar, puede restaurar hasta el número de días especificados para conservar las copias de seguridad, hasta el máximo de 35 días. Para especificar cuánto tiempo se deben conservar las copias de seguridad para:
- En Azure Portal, vaya al servidor flexible de Azure Database for PostgreSQL.
- En la sección Información general, seleccione la configuración.
- En Copias de seguridad, busque Período de retención de copia de seguridad (en días). La barra deslizante permite seleccionar durante cuántos días desea que se conserven las copias de seguridad.
- Seleccione Guardar para conservar los cambios.