Saltar al contenido
Categoría: Azure
2023-05-18

Cómo configurar pgbackrest en PostgreSQL para realizar backups a Azure

¡Hola! Bienvenidas y bienvenidos a un nuevo post en el mejor blog de Data y Cloud. En el artículo de hoy hablaremos sobre cómo realizar backups a Azure con pgbackrest en Postgre SQL.

Pero primero, vamos a hablar un poco de qué es PGBackrest y cuáles son sus principales funcionalidades.

PGBackrest es una herramienta sencilla y fiable para las copias de seguridad automáticas, en la cual podemos hacer copias de seguridad de tipo: diferenciales, incrementales y completas.

Además es compatible con las siguientes plataformas Azure/Amazon S3/OCI/GCP.

Esta herramienta solo es compatible con PostgreSQL y actualmente solo está disponible en distribuciones Ubuntu.

En el ejemplo de este blog, lo vamos a hacer en un Ubuntu server 20.04.1 y PostgreSQL 15

1.    Instalar PostgreSQL

Lo vamos a instalar con los siguientes comandos:

Crear la configuración del repositorio de archivos

sudo sh -c ‘echo «deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main» > /etc/apt/sources.list.d/pgdg.list’

Descargar e instalar el certificado

wget –quiet -O – https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –

Actualizamos los repositorios con las nuevas listas

sudo apt-get update

Instalamos la última versión de PostgreSQL

sudo apt-get -y install postgresql

Pero si queremos instalar un versión de PostgreSQL en específico lo podemos hacer con el siguiente comando:

apt-get install postgresql-12

2.    Instalar PGBackrest

apt-get install pgbackrest

3.    Configuración de pgbackrest

Cuando instalamos pgbackrest tambien se genera un archivo llamado pgbackrest.conf que está en la ruta /etc/pgbackrest.conf.

Editamos el fichero, y en el fichero veremos lo siguiente:

Global son las opciones globales que podemos configurar para nuestro cluster de base de datos, es decir, cifrado, retención de backup, el tipo Azure, Amazon, Google y otras configuraciones.

Main: es el nombre de nuestro stanza.

Un stanza es la configuración de un cluster de base de datos de PostgreSQL en la cual definimos donde se encuentra la BBDD, es decir, la ruta y como se van a realizar los backup.

Vamos borrar el contenido y ponemos lo siguiente:

Explicación de los parámetros:

[dvdrental]: es el nombre de nuestro stanza, le hemos puesto el mismo nombre que a nuestra BBDD pero le podemos llamar como queramos.

[global]

repo1-retention_full y repo1-retention_diff significa que vamos a guardar las dos ultimos backupFull realizados con éxito, así como los backupDiff asociados a estos.

Pero si queremos especificar la retención en días, podemos hacerlo con las siguientes líneas:

repo1-retention-full-type=tiempo
repo1-retention-full=30

Importante:
Si en este ejemplo el repositorio tuviera cinco backupFull – una de 25 días de antigüedad, otra de 35 días y el resto más antiguas – el backupFull de 35 días de antigüedad seguiría siendo necesario para restaurar al periodo comprendido entre hace 30 y 25 días, y como tal se mantiene aunque sea más antigua que el periodo de retención configurado. Todas los backup anteriores se eliminarán durante el mantenimiento de la retención.

[repo1-cipher-pass]: clave de cifrado para nuestros backup

Nota:

Para la clave de cifrado podemos ejecutar el siguiente comando para que nos genere una clave:

openssl rand -base64 48

[repo1-cipher-type]: es el tipo de cifrado que vamos a utilizar

[repo1-path]: es la carpeta en nuestro cloud donde vamos a guardar los backups, la carpeta se crea automáticamente.

Lo siguientes parámetros son las credenciales de nuestro usuario en Azure.

[repo1-azure-account] [repo1-azure-container] [repo1-azure-key]

Para obtener estas credenciales nos vamos a nuestra cuenta en Azure.

Cuentas de almacenamiento

Creamos una nueva cuenta y una vez creada vamos a claves de acceso

Y aquí podremos ver nuestra KEY.

[repo1-type]: es el tipo de almacenamiento, es decir, Azure, Amazon, Google…

[process-max]: es el máximo de procesos a utilizar para comprimir/transferir, cada procesos realizara la compresión y transferencia para que la ejecución sea lo más rápida posible.

 Este valor no hay que ponerlo muy alto ya que puede afectar al rendimiento de la nuestra BBDD.

4.    Configuración de PostgreSQL

Editamos el archivo de configuración de PostgreSQL que se encuentra en la siguiente ruta:

nano /etc/postgresql/15/main/postgresql.conf

y al final del archivo ponemos las siguiente líneas, justo debajo de “CUSTOMIZED OPTIONS”

archive_command = ‘pgbackrest –stanza=dvdrental archive-push %p’

archive_mode = on

max_wal_senders = 3

wal_level = hot_standby

archive_command: esto para determinar cómo vamos a enviar nuestro

archive_mode: con esta opción vamos a realizar los backup del log de transacciones para poder recuperar nuestra BBDD a cualquier punto en el tiempo

max_wal_senders: especifica el numero máximo de conexiones concurrentes desde servidores en espera o clientes de copia de seguridad de base de streaming, es decir el número máximo de procesos emisores de WAL que se ejecutan simultáneamente.

wal_level: determina cuanta información se escribe en los archivos WAL.

Una vez configurado PostgreSQL, hay que reiniciar el servidor para que se apliquen los cambios.

systemctl restart postgresql

5.    Configuración de Copias

La configuración de las copias la vamos a hacer con usuarios postgres, que es el usuario por defecto de PostgreSQL.

Y vamos a congurar las copias para que solo este usuario puede lanzar los backup.

Aquí entramos como usuario postgres en nuestro Ubuntu:

sudo -i -u postgres

Iniciamos el repositorio:

pgbackrest –stanza=dvdrental –log-level-console=info stanza-create

Comprobamos la configuracion:

pgbackrest –stanza= dvdrental –log-level-console=info check

6.    Programación de las copias

En esta parte seguimos logueados como usuarios postgres.

En la carpeta /var/lib/postgresql/ vamos a crear un script para las copias.

nano copia.bash

y añadimos el siguiente contenido.

Añadimos permisos de ejecución:

chmod ug+x copia.bash

Y en el crontab de Ubuntu añadimos las líneas para que se ejecute de manera automática.

#copia full todos los domingos

0 23 * * 0 /var/lib/postgresql/copia.bash full > /var/lib/postgresql/copia_full.ultimo 2>&1

El backup full se ejecuta todos los domingos a las 23:00

#copia diff los demas dias

0 23 * * 1-6 /var/lib/postgresql/copia.bash diff > /var/lib/postgresql/copia_diff.ultimo 2>&1

El backup diff se ejecuta todos los días a las 23:00

Puntos importanes a tener en cuenta en la configuración de pgbackrest

Una vez que tengamos pgbackrest configurado y funcionando es muy importante hacernos una copia del fichero pgbackrest.conf, ya que en este fichero es donde tenemos informada nuestra clave de encriptación, nuestras credenciales de azure, key, account y el bucket.

SI PERDEMOS ESTE FICHERO NO PODREMOS RECUPERAR NUESTROS BACKUP.

Por otro lado tener en cuenta que pgbackrest cuando realiza los backups los divide en pequeños archivos ya que facilita la subida de archivos a nuestra cuenta en Azure, en vez de subir un único archivo.

Y con esto damos por finalizado el artículo de hoy. Si te ha parecido interesante, puedes consultar nuestros últimos posts de SQL Server y Azure:

Ledger para SQL Server 2022

Actualiza MongoDB sin parada de servicio

Cómo crear Alertas de Coste en una Suscripción de Azure

Si necesitas ayuda con tu BBDD o estas pensando en migrar tu SQL Server a la nube, en Aleson ITC podemos ayudarte.

Complete este formulario para recibir la guía de Windows Server en Azure
*Obligatorio
Complete este formulario para recibir la guía de Windows Server en Azure
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
*Obligatorio
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud Migration Essentials
*Obligatorio
Complete este formulario para recibir Cloud Migration Essentials
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
*Obligatorio
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete this form to recieve the guide of Windows Server on Azure
*Required
Complete this form to recieve the guide of Windows Server on Azure
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
*Required
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Essentials
*Required
Complete this form to recieve Cloud Migration Essentials
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud security Advice for Nonprofit Leaders
*Required
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Simplified Ebook.
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!