100% encontró este documento útil (1 voto)
353 vistas6 páginas

Backups Postgresql

Este documento describe diferentes tipos de backups que se pueden implementar en PostgreSQL, una base de datos popular. Explica que los backups completos, incrementales y diferenciales son útiles para recuperar datos en caso de fallas. Los backups completos copian toda la data, mientras que los incrementales y diferenciales solo copian los cambios realizados desde el último backup. También discute la importancia de los archivos WAL en PostgreSQL para crear backups y garantizar la integridad de los datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
353 vistas6 páginas

Backups Postgresql

Este documento describe diferentes tipos de backups que se pueden implementar en PostgreSQL, una base de datos popular. Explica que los backups completos, incrementales y diferenciales son útiles para recuperar datos en caso de fallas. Los backups completos copian toda la data, mientras que los incrementales y diferenciales solo copian los cambios realizados desde el último backup. También discute la importancia de los archivos WAL en PostgreSQL para crear backups y garantizar la integridad de los datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

Backups en PostgreSQL
William A. Sánchez Christian X. Collaguazo
Universidad de Cuenca Universidad de Cuenca
Carrera Ingeniería en Sistemas Carrera Ingeniería en Sistemas
Cuenca, Ecuador Cuenca, Ecuador
[Link]@[Link] [Link].@[Link]

Abstract.-. El presente trabajo contiene la información detallada para entender cómo funciona y cómo se implementa un backup en
postgreSQL. Se describen diferentes secciones donde se encuentran los conocimientos fundamentales para entender cómo funciona un
backup y la importancia del mismo. La parte esencial es la implementación de backups de tipo completo, incremental y diferencial
obteniendo como resultado respaldos que funcionan correctamente.

Palabras clave: PostgreSQL, backup, ubuntu, windows, backup completo, backup incremental, backup diferencial, pg_dump

I. INTRODUCCIÓN
Todo sistema maneja datos, los cuales son almacenados en Las copias de seguridad que no se completan de forma
diferentes tipos de bases de datos ya sean locales o remotas. correcta, son las que no se ejecutan con la suficiente
Con el pasar del tiempo cada empresa que manejaba estos frecuencia para permitir que exista redundancia integrada y
sistemas se vió en la necesidad de tener un respaldo que lograr así restaurar los datos completos.[2] La frecuencia para
permitiera recuperar su información en caso de que el sistema crear las copias de seguridad deben estar dadas por
fallara por algún motivo y que la información se perdiera. De necesidades de cada organización.
esta forma surgieron los backups (copias de seguridad), como
mecanismo para restaurar la información. La pérdida de datos
B. Tipos de Backup
o la inestabilidad del sistema son factores a tener en cuenta a
la hora de hacer estas copias de seguridad o backups. Al
perderse estos datos tenemos un backup de nuestro sistema en En la actualidad existen diferentes tipos de backup que se
otro dispositivo de almacenamiento masivo que se utilizara pueden implementar de acuerdo a lo que amerite la empresa o
para restaurar dichos datos. Aparte de la necesidad de realizar sistema. En este caso detallaremos tres de ellos, de los cuales
estas copias de seguridad, es muy importante la comprobación se ha implementado los dos primeros.
de las mismas, es decir, no sirve de nada copiar unos datos a
otro sitio si el backup sale defectuoso o el dispositivo está Backup Completo
dañado. La política que se adopta en la mayoría de casos es
Este tipo de backup realiza una copia completa de toda la data
una vez realizado el backup, realizar una verificación
aleatoria de una muestra al azar de datos del backup, si esta seleccionada. Esta se volverá a crear en su totalidad
verificación resulta ser positiva consideraremos que el backup dependiendo el tiempo en el que el usuario haya definido. Su
se ha completado con éxito. En esta ocasión nos centraremos desventaja es que cada respaldo ocupará demasiado
en las copias de seguridad que se pueden implementar en espacio.[2] El backup completo es el punto de partida para
PostgreSQL una base de datos muy conocida y usada en la todas las demás backups y contiene todos los datos de las
actualidad por el hecho de que ofrece muchas herramientas carpetas y archivos seleccionados para realizar un backup. [6]
para el correcto manejo de los datos. [5]
Lo ideal sería realizar backups completos todo el tiempo, ya
II. MARCO TEÓRICO
que son más completos e independientes. Sin embargo, el
A. Backup tiempo que toma realizar este tipo de backup impide usarlo a
Backup, es el proceso que permite crear una reserva o copia menudo (puede tardar hasta 10 veces más tiempo, en
de los datos originales de cualquier sistema de información comparación con otros tipos de backup) . Este tipo de backup
que se almacenan en una región segura del sistema. [1] es programado para su ejecución de forma semanal o
mensual, pero con la creciente velocidad y capacidad de los
Realizar copias de seguridad y restaurar datos es una de las medios de almacenamiento hace que los backups completos
mayores responsabilidades en el campo profesional. Sin por la noche sea una propuesta realista. [6][7]
embargo, en 2014 el informe anual del Consejo de
Recuperación de Desastres encontró que "tres de cada cuatro También es considerado la mejor opción de protección de
compañías no se están preparando para la recuperación ante datos en términos de simplicidad y velocidad de recuperación.
desastres de sus sistemas de TI." [2][3]
INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

Fig. 1. Arquitectura de un Backup Completo [7]


Fig. 3. Arquitectura de un Backup Diferencial [7]
Dado a su alto consumo de red y almacenamiento al momento
El tiempo en que deben ser programados estos tipos de
de ejecutar el backup, la mayoría de organizaciones realizan
backups es similar que el backup incremental(Ver fig. 2), pero
backups completos de forma periódica, en combinación de
hay que tomar en cuenta que a medida que avanza el tiempo,
con otros tipos de backups. [7]
los incrementos de los conjuntos de datos modificados pueden
crecer, y con cada copia de seguridad pueden ocupar aún más
Backup Incremental
espacio de almacenamiento y tiempo que las copias de
Los backups incrementales sirven para reducir la cantidad de
seguridad completas regulares. [7]
tiempo y carga de trabajo de red necesaria para ejecutar
copias de seguridad completas consecutivas. Para lograr esto
C. Copias de seguridad físicas y lógicas
primero se realiza una copia completa y a partir de esta cada
nueva copia únicamente irá almacenando los nuevos cambios
Las copias de seguridad se pueden dividir en copias de
realizados[2][7]. Los tiempos para ejecutar un backup
seguridad física y lógicas:
incremental se reducen en comparación al backup completo,
es recomendable hacer un backup incremental cada dia o en
- Las copias de seguridad físicas son copias de los
cortos periodos de tiempo. (Ver fig. 2).
archivos físicos utilizados para almacenar y recuperar la
base de datos, como archivos de datos, archivos de
control y registros de rehacer archivados.[4]
- Las copias de seguridad lógicas contienen datos lógicos
(por ejemplo, tablas o procedimientos almacenados)
exportados desde una base de datos.[4]

III. IMPLEMENTACIÓN BACKUP EN POSTGRESQL


A. Backups en PostgreSQL
Fig. 2. Arquitectura de un Backup Incremental [7]
Los backups incrementales son rápidos y requieren mucho Es importante hablar primero sobre los archivos WAL (Write
menos espacio de almacenamiento, en comparación con el Ahead Log ) los cuales son utilizados por postgreSQL para
backup completo, pero el proceso de recuperación consume guardar toda la información sobre las transacciones y cambios
más tiempo, ya que necesita restaurar tanto la copia de realizados en la base de datos. Los archivos WAL tienen un
seguridad completa más reciente como toda la cadena de papel fundamental para la creación de backups incrementales
y diferenciales.
incrementos consecutivos. [7]
Archivos WAL
Backup Diferencial WAL es un método estándar para garantizar la integridad de
El tipo de backup diferencial es una solución intermedia entre los datos, los cambios en los archivos de datos (donde residen
un backup completo y los backups incrementales. Este backup las tablas y los índices) deben escribirse solo después de que
realiza un copia únicamente de todos los cambios realizados esos cambios se hayan registrado, es decir, después de que los
desde la última copia completa. Es mucho más rápida y registros que describen los cambios se hayan vaciado al
requiere menos espacio de almacenamiento que una copia de almacenamiento permanente. [8]
seguridad completa, pero más que una copia de seguridad
Los ficheros WAL son los que almacenan la información
incremental. Por lo tanto, el backup diferencial permite
sobre las transacciones realizadas, cuyo almacenamiento es
restaurar los datos más rápido, en comparación con el backup continuo y no para una vez que haya sido activado. Se siguen
incremental, ya que solo requiere dos piezas de copia de generando mientras se produzca alguna modificación, es
seguridad: un backup completo inicial y el último backup esencial para el funcionamiento de postgres. También es
diferencial.[2][7] importante conocer qué se debe hacer en caso de no querer
almacenar una cantidad ilimitada de estos ficheros. Postgres
ofrece 3 opciones distintas para manejarlos.
INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

- Cada cierto tiempo debe realizar la denominada


- wal_keep_segments : establece el número mínimo copia de seguridad base.
de archivos WAL más recientes que se conservarán - Una vez terminada la copia de seguridad base habrá
en el directorio de archivos WAL. que borrar todos ficheros WAL antiguos que no se
- max_wal_size ​: especifica el tamaño total máximo
necesiten.
de los archivos WAL en el directorio de archivos
- En caso de catástrofe, puede utilizar su copia de
WAL.
seguridad inconsistente, copia de seguridad base,
- min_wal_size : especifica un tamaño total mínimo
más todos los ficheros WAL archivados desde el
para los archivos WAL.
término de esta copia hasta el momento del fallo,
para restaurar nuestra base de datos a un estado
Métodos de Backups en PostgreSQL
consistente y sin pérdida de datos.
Los backups en postgres se dividen en dos tipos: .
- De la misma manera se puede devolver a la base de
- Las copias de seguridad físicas se conocen como
datos al estado en que se encontraba en un
instantáneas de nivel de sistema de archivos.
determinado momento, de ahí que se llame
- Las copias de seguridad lógicas se conocen como
"recuperación a un punto del tiempo".
volcados de SQL.
Algunas de las características que ofrecen estos dos modos se
Ambos tipos de backups son útiles y se dividen en dos
pueden observar en la siguiente tabla:
métodos, el primer modo a nivel físico llamada modo DUMP
y a nivel lógico Point-In-Time-Recovery Característica DUMP PITR

Velocidad de backup y Lenta Rápida


1. Método DUMP
restore
Backup a nivel físico, se basa en las herramientas nativas de
postgres para realizar copias completas, (pg_dump). [5] Tamaño requerido para Pequeño Grande
el backup
Este modo funciona generando un archivo de texto con
comandos SQL para volver a crear el clúster de Postgres, una Permite recuperaciones No Si
base de datos o una tabla determinada. Utiliza comandos tipo Point-In-Time
pg_dump y pg_dumpall, aunque sólo para exportaciones
Permite backups de tipo No Si
lógicas. Incremental/Diferencial.

2. Método Point-In-Time-Recovery(PITR) No requiere ajustes. No Si


Backup a nivel lógico, el cual es un tipo de backup avanzado
Tabla 1. Características del método DUMP y PITR
que trabaja con datos importantes los cuales no pueden
perderse en caso de fallo. No es otra cosa que el
almacenamiento y copia continua de todas las transacciones B. Implementación del método DUMP mediante
producidas por PostgreSQL desde el último backup realizado PG_DUMP
a nivel de sistema de fichero. [9]
PG_DUMP
PG_DUMP es una herramienta para realizar backups de una
base de datos PostgreSQL, la cual al momento de su
ejecución devuelve como salida scripts que son archivos de
texto sin formato que contienen los comandos SQL para
reconstruir una base de datos al estado en el cual se ejecutó la
sentencia de copiado. Estos archivos permiten reconstruir la
base de datos en otros equipos y otras arquitecturas.

Fig. 4. Arquitectura de un PITR. Requisitos Previos


Para la implementación debe utilizar los siguientes
componentes de software, sobre el sistema operativo
Funcionamiento​: Windows 10:
- PostgreSQL almacena todos los ficheros WAL - PostgreSQL en su versión 12
generados por el sistema. - pgAdmin en su versión 4: herramienta gráfica para
administrar base de datos de PostgreSQL.
INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

En caso de restaurar la información se procedería a hacerlo


Además de esto debe crear una pequeña base de datos de como otros gestores de bases de datos mandando a ejecutar el
prueba llamada “baseprueba” la cual cuenta con las siguientes archivo SQL.
tablas:
- Cliente C. Implementación del Método Point-In-Time-
- Ventas Recovery(PITR) para la creación de backups
- Producto incrementales y diferenciales.
- Detalles Dado que postgreSQL no tiene soporte nativo para la creación
de backups incrementales, se debe hacer uso de librerías y
Implementación por línea de comandos herramientas de software externa. Esta operación se la hará en
Para esta implementación es importante ingresar el directorio una máquina virtual de linux con la distribución Ubuntu 18.04
donde se encuentra PG_DUMP que viene previamente dado que existen más herramientas para crear backups
instalado en conjunto de PostgreSQL. incrementales y diferenciales.
cd ​C:\Program Files\PostgreSQL\12\bin
Los requisitos de software para esta operación son:
En caso de tener ya seleccionado la base de datos de la cual se - PostgreSQL en su versión 10
hará el backup se procede a ejecutar el siguiente comando. - pgAdmin en su versión 4.
pg_dump ​-U username -W -F t database_name > - pgBackRest: Es una alternativa a PG_DUMP para la
c:\backup_file.tar creación de backups de base de datos que permite
crear backups completos, incrementales y
En este caso previamente se debe ingresar:
diferenciales de forma rápida y segura.[11]
- -U usuario: El nombre de usuario que va generar el
backup.
Los requisitos para la implementación de pgBackRest se los
- -W: En caso de que el usuario tenga que ingresar una
puede encontrar en su sitio web oficial:
contraseña previamente.
[Link]
- -F: Da el formato del archivo de salida, que contiene
las sentencias SQL para recuperar la base de datos.
Antes de crear los backups se debe configurar archivos de
- Se debe ingresar además el nombre de la base de
configuración tanto postgreSQL como de pgBackRest. En el
datos a respaldar y el directorio con el nombre del
archivo de configuración de la base de datos que local debe
archivo esperado.
cambiar o activar el archivado WAL esto permitirá mantener
la coherencia de la base de datos al momento de crear
La salida de la ejecución de este comando es un archivo ya
incrementos o diferencias.
sea de texto plano .sql o tar. Un ejemplo de la salida de este
proceso se puede apreciar en la siguiente figura, la cual archivo ​ /etc/postgresql/10/main/[Link]
muestra una parte del archivo con las sentencias SQL para archive_command = 'pgbackrest --stanza=demo
recuperar la base de datos. archive-push %p'
archive_mode = on
listen_addresses = '*'
log_line_prefix = ''
Una vez hecho se debe incluir en el archivo de configuración
de pgbackrest la siguiente información.
archivo ​ /etc/postgresql/10/main/[Link]
Fig. 4. Salida de la ejecución del backup mediante [demo]
PG_DUMP pg1-path=/var/lib/postgresql/10/main

En caso de querer realizar un backup completo se debe [global]


ejecutar el siguiente comando. repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
pg_dumpall ​-U postgres > c:\pgbackup\[Link]
[global:archive-push]
compress-level=3
Otras opciones que se pueden agregar al momento de realizar
el backup se encuentran en el siguiente sitio web oficial de Donde pg1-path apunta al directorio que contiene todos las
postgreSQL: bases de datos y archivos de configuración de la base local.
[Link] repo1-path apunta al repositorio donde se guardaran los
backups y archivos de los segmentos WAL.
INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

repo1-retention-full=2 permite conservar un determinado En caso de linux el programar backups periódicamente se lo


número de backups para permitir restauraciones en un hace mediante crontab (fig. 7) donde debemos elegir cuando
momento dado, pensando en optimizar el uso de espacio en hacer un backup completo y dependiendo el caso un backup
disco. Las opciones de retención eliminan las copias de incremental o diferencial.
seguridad anteriores una vez que ya no son necesarias.
Finalmente, compress-level=3 establece el nivel de
compresión del archivado.
Fig. 7. Trabajos cron que se ejecutan periódicamente para
crear backups completos e incrementales.
Una vez hecho esto se debe continuar con la creación de la
En el ejemplo de la fig. # podemos observar dos trabajos cron
estrofa. ​“Una estrofa es la configuración de un clúster de
que se ejecutara todos los días a la media noche y que
base de datos PostgreSQL que define dónde se encuentra,
ejecutarán un backup completo todos los domingos y
cómo se realizará una copia de seguridad, opciones de
backups diferenciales el resto de los días.
archivado, etc.”​[12] Para esto se debe hacer uso del siguiente
comando.
Restauración de un backup
sudo -u postgres pgbackrest --stanza=demo Para recuperar la información que se encuentra en un backup
--log-level-console=info stanza-create mediante pgBackRest primero se debe detener el cluster que
contiene la base de datos, luego ejecutar el comando de
Realizar Backups con pgBackRest restauración y por último levantar el cluster otra vez.
Una vez configurado pgBackRest el crear un backup primero sudo ​pg_ctlcluster 10 main stop
inicia creando una copia completa de la base de datos en sudo ​-u postgres pgbackrest --stanza=demo restore
conjunto con los archivos de configuración. Para esto basta sudo​ pg_ctlcluster 10 main start
con ejecutar el siguiente comando.
sudo -u postgres pgbackrest --stanza=demo ​--type=full \ Restauración en un momento dado
--log-level-console=info backup La recuperación a un momento dado (PITR) permite que el
WAL se reproduzca desde la última copia de seguridad hasta
--type : full, diff, incr un tiempo, identificador de transacción o punto de
recuperación especificados.[12]
Para crear un incremento o diferencia sólo hay que cambiar el
atributo -type del anterior comando, por defecto se ejecuta un Antes de realizar la recuperación es importante saber la hora
backup completo(en caso de que no exista) antes de hacer un exacta donde la o las tablas se corrompieron, por lo que en la
backup incremental o diferencial. La salida de este proceso práctica esta operación conlleva un trabajo forense que
nos devuelve el siguiente resultado. permita determinar dicha hora. Una vez se sepa esta
información primero se debe detener el cluster y ejecutar el
siguiente comando de restauración.

Fig. 5. Salida al momento de ejecutar un backup completo sudo ​pg_ctlcluster 10 main stop
sudo ​-u postgres pgbackrest --stanza=demo --delta \
Al momento de realizar cualquier cambio en la base de datos
--type=time "--target=2020-04-20
ya sea operaciones CRUD en alguna de las tablas y después
[Link].184093+00" \
ejecutar un incremento, solo se crea la copia de seguridad de --target-action=promote restore
los datos ingresados después del anterior incremento o backup sudo​ pg_ctlcluster 10 main start
total.
--target=tiempo identificador en el cual se desea recuperar
la base de datos.

Fig. 6. Salida al momento de ejecutar un backup incremental IV. CONCLUSIONES


Las copias de seguridad o respaldos son y seguirán siendo una
Programar un backup
de las herramientas más importantes y necesarias para el
El programar de forma automática cuando se realizan los
manejo de los datos. Cada día aparecen nuevas tecnologías
diferentes tipos de backups de las bases de datos es
que facilitan su implementación por lo que cada empresa se
importante ya que ahorra tiempo y brinda la seguridad de que
verá en la necesidad de hacer uso de ello. Las copias de
la base de datos tiene la capacidad de ser recuperada en caso
seguridad deben realizarse de forma remota, cada copia es
de una falla o pérdida de información.
mejor restaurarla remotamente para no afectar la base
principal y evitar posibles ataques.
INTELIGENCIA ARTIFICIAL, BACKUPS EN POSTGRESQL

Las copias de seguridad diferenciales resultan eficientes para [9]"Usando PITR - Point in Time Recovery | Emc2Net",
cortos periodos de tiempo, cuanto se excede este tiempo [Link], 2020. [Online]. Available:
resulta más factible realizar copias completas ya que el [Link]
espacio requerido es mucho menor. Realizar copias de [Accessed: 02- May- 2020].
[10]"PostgreSQL Backups 101 | Codementor",
seguridad debería ser un paso obligatorio para todo aquel que
[Link], 2020. [Online]. Available:
trabaje con base de datos, sin importar si estos datos son o no [Link]
relevantes, tener un respaldo siempre es una medida de -101-xczw6mfpy. [Accessed: 01- May- 2020].
seguridad ante posibles pérdidas.
En ubuntu se debe tener un cierto conocimiento en manejo de [11]"pgBackRest - Reliable PostgreSQL Backup & Restore",
comandos para implementar un backup de forma eficiente. pgBackRest - Reliable PostgreSQL Backup & Restore, 2020.
Postgresql para linux tiene más documentación por lo que [Online]. Available: [Link] [Accessed: 03-
brinda más facilidades al momento de su implementación. May- 2020].
PITR es sin duda una de las opciones más usadas ya que
[12]"pgBackRest User Guide - Debian & Ubuntu /
permite tener un registro de cada cambio o actualización en PostgreSQL 10", pgBackRest - Reliable PostgreSQL Backup
los datos, nos brinda la facilidad de poder acceder a cada uno & Restore, 2020. [Online]. Available:
de esos registros sin problema alguno y en el tiempo deseado. [Link] [Accessed:
29- Apr- 2020].
V. REFERENCIAS
[1]"Backup: Concepto, Usos y Cómo hacer backups",
[Link], 2020. [Online]. Available:
[Link] [Accessed: 28- Apr- 2020].

[2]"Types Of Database Backups | SolarWinds MSP",


[Link], 2020. [Online]. Available:
[Link]
ackups. [Accessed: 01- May- 2020].

[3]"Disaster Recovery and Continuity (DRaaS) Solutions |


Unitrends", Unitrends, 2020. [Online]. Available:
[Link]
ervice-draas. [Accessed: 03- May- 2020].

[4]"Types Of Database Backups | SolarWinds MSP",


[Link], 2020. [Online]. Available:
[Link]
ackups. [Accessed: 03- May- 2020].

[5]"Automated Backup on Windows - PostgreSQL wiki",


[Link], 2020. [Online]. Available:
[Link]
dows. [Accessed: 03- May- 2020].

[6]"6 - COPIAS DE SEGURIDAD", [Link], 2020.


[Online]. Available:
[Link]
[Accessed: 01- May- 2020].

[7]"Full backup - Backup4all", [Link], 2020.


[Online]. Available:
[Link] [Accessed:
02- May- 2020].

[8]"Types of backup: Full, Incremental, Differential, and


Others", Official NAKIVO Blog, 2020. [Online]. Available:
[Link]
cremental-differential-synthetic-and-forever-incremental/.
[Accessed: 03- May- 2020].

También podría gustarte