Copia de Seguridad y Restauración de PostgreSQL

PostgreSQLBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá las técnicas esenciales para realizar copias de seguridad y restaurar bases de datos PostgreSQL. La gestión adecuada de las copias de seguridad es una habilidad crítica para cualquier administrador de bases de datos para prevenir la pérdida de datos.

Comenzará creando una base de datos de ejemplo y la poblará con datos. Luego, utilizará la utilidad pg_dump para crear una copia de seguridad completa de la base de datos. A continuación, aprenderá a restaurar la base de datos desde el archivo de copia de seguridad utilizando la herramienta de línea de comandos psql. Finalmente, practicará la copia de seguridad y restauración de una única tabla específica de su base de datos.

Crear y Poblar una Base de Datos de Ejemplo

En este paso, creará una base de datos PostgreSQL llamada salesdb y la poblará con datos de ejemplo. Esta base de datos servirá como base para las operaciones de copia de seguridad y restauración en los pasos posteriores.

Paso 1: Crear la base de datos

Primero, desde su terminal, cree la base de datos salesdb utilizando la utilidad de línea de comandos createdb. Esta es una envoltura conveniente para el comando SQL CREATE DATABASE.

createdb salesdb

Paso 2: Conectarse a la base de datos

A continuación, conéctese a su base de datos salesdb recién creada utilizando el terminal interactivo psql.

psql -d salesdb

Ahora verá el prompt de psql, que se ve como salesdb=#, indicando que está conectado a la base de datos salesdb.

Paso 3: Crear tablas e insertar datos

Dentro del shell de psql, ejecute los siguientes comandos SQL para crear dos tablas: customers y products.

Crear la tabla customers:

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

Crear la tabla products:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(10, 2)
);

Ahora, inserte algunos datos de ejemplo en ambas tablas.

Insertar datos en customers:

INSERT INTO customers (name) VALUES ('Alice'), ('Bob');

Insertar datos en products:

INSERT INTO products (name, price) VALUES ('Laptop', 1200.00), ('Mouse', 25.00);

Paso 4: Verificar los datos

Para confirmar que los datos se insertaron correctamente, ejecute consultas SELECT en ambas tablas.

SELECT * FROM customers;

La salida debería ser:

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Ahora, verifique la tabla products:

SELECT * FROM products;

La salida debería ser:

 id |  name  |  price
----+--------+---------
  1 | Laptop | 1200.00
  2 | Mouse  |   25.00
(2 rows)

Finalmente, salga del shell de psql para volver a su terminal habitual.

\q

Ha configurado correctamente la base de datos para los siguientes pasos.

Realizar Copia de Seguridad de la Base de Datos Completa

En este paso, utilizará la utilidad pg_dump para crear una copia de seguridad completa de la base de datos salesdb. pg_dump genera un archivo que contiene comandos SQL que se pueden utilizar para reconstruir la base de datos.

Comprender pg_dump

pg_dump es una utilidad estándar de PostgreSQL para hacer copias de seguridad de una única base de datos. Crea una instantánea coherente de la base de datos, incluso si se está utilizando activamente. Por defecto, genera un archivo de script SQL de texto plano.

Paso 1: Realizar la copia de seguridad

Desde su terminal, ejecute el siguiente comando para volcar la base de datos salesdb en un archivo llamado salesdb.sql dentro de su directorio de proyecto.

pg_dump salesdb > ~/project/salesdb.sql

Analicemos el comando:

  • pg_dump salesdb: Esto especifica que desea hacer una copia de seguridad de la base de datos salesdb.
  • > ~/project/salesdb.sql: Esto redirige la salida estándar del comando a un archivo llamado salesdb.sql en el directorio ~/project.

Paso 2: Verificar el archivo de copia de seguridad

Primero, verifique si el archivo se creó usando el comando ls.

ls -l ~/project

Debería ver salesdb.sql en la lista de archivos.

A continuación, inspeccione el contenido del archivo de copia de seguridad para comprender qué creó pg_dump. Utilice el comando head para ver las primeras líneas.

head ~/project/salesdb.sql

La salida mostrará el inicio del script SQL, incluyendo comentarios sobre la versión de pg_dump y comandos para configurar el entorno de la base de datos. Esto confirma que su archivo de copia de seguridad es un script SQL válido.

Restaurar la Base de Datos desde una Copia de Seguridad

En este paso, aprenderá a restaurar una base de datos desde un archivo de copia de seguridad SQL de texto plano. Creará una nueva base de datos y luego utilizará la utilidad psql para ejecutar los comandos SQL del archivo de copia de seguridad.

Comprender la restauración de bases de datos

Para los archivos SQL de texto plano creados por pg_dump, la utilidad psql es la herramienta estándar para la restauración. Lee los comandos SQL del archivo y los ejecuta contra la base de datos especificada, recreando efectivamente las tablas y los datos.

Paso 1: Crear una nueva base de datos para la restauración

Para evitar sobrescribir su base de datos original, restaurará la copia de seguridad en una base de datos nueva y vacía. Cree una base de datos llamada salesdb_restored.

createdb salesdb_restored

Paso 2: Restaurar la copia de seguridad

Ahora, utilice psql para restaurar la copia de seguridad salesdb.sql en la base de datos salesdb_restored.

psql -d salesdb_restored -f ~/project/salesdb.sql

Analicemos el comando:

  • psql: El terminal interactivo de PostgreSQL, que también puede ejecutar archivos de script.
  • -d salesdb_restored: Especifica la base de datos de destino para la restauración.
  • -f ~/project/salesdb.sql: Especifica el archivo de entrada que contiene los comandos SQL a ejecutar.

Verá la salida de los comandos SQL que se están ejecutando, como CREATE TABLE e INSERT.

Paso 3: Verificar la base de datos restaurada

Conéctese a la base de datos salesdb_restored para verificar que las tablas y los datos se han restaurado correctamente.

psql -d salesdb_restored

Dentro del shell de psql, primero liste las tablas:

\dt

Debería ver las tablas customers y products.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | customers | table | labex
 public | products  | table | labex
(2 rows)

A continuación, consulte la tabla customers para asegurarse de que los datos están presentes.

SELECT * FROM customers;

La salida debería coincidir con los datos originales.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Salga del shell de psql.

\q

Ha restaurado correctamente una base de datos desde una copia de seguridad.

Realizar Copia de Seguridad y Restaurar una Tabla Individual

A veces, es posible que solo necesite hacer una copia de seguridad o restaurar una tabla específica en lugar de la base de datos completa. La utilidad pg_dump admite esto con la opción -t.

Paso 1: Hacer una copia de seguridad de una tabla individual

Hagamos una copia de seguridad solo de la tabla customers de la base de datos original salesdb.

Ejecute el siguiente comando en su terminal:

pg_dump -d salesdb -t customers > ~/project/customers_table.sql
  • -d salesdb: Especifica la base de datos de origen.
  • -t customers: Especifica la tabla de destino que se va a volcar.
  • > ~/project/customers_table.sql: Redirige la salida a un nuevo archivo de copia de seguridad.

Paso 2: Simular pérdida de datos

Para demostrar el proceso de restauración, primero eliminaremos la tabla customers de la base de datos salesdb_restored para simular una eliminación accidental.

psql -d salesdb_restored -c "DROP TABLE customers;"

El comando mostrará DROP TABLE, confirmando la eliminación.

Paso 3: Restaurar la tabla individual

Ahora, restaure la tabla customers desde su archivo de copia de seguridad específico de la tabla en la base de datos salesdb_restored.

psql -d salesdb_restored -f ~/project/customers_table.sql

Paso 4: Verificar la restauración de la tabla

Finalmente, conéctese a la base de datos salesdb_restored y verifique que la tabla customers ha vuelto, mientras que la tabla products permanece intacta.

psql -d salesdb_restored

Dentro de psql, liste las tablas:

\dt

Debería ver las tablas customers y products listadas nuevamente.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | products  | table | labex
 public | customers | table | labex
(2 rows)

Consulte la tabla customers restaurada para confirmar que sus datos están intactos.

SELECT * FROM customers;

La salida debería mostrar los datos originales del cliente.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Salga del shell de psql.

\q

Ha hecho una copia de seguridad y restaurado con éxito una tabla individual.

Resumen

En este laboratorio, ha aprendido los procedimientos fundamentales para hacer copias de seguridad y restaurar bases de datos PostgreSQL. Estas habilidades son esenciales para la protección de datos y la recuperación ante desastres.

Ha aprendido a:

  • Crear una base de datos y poblarla con tablas y datos.
  • Utilizar pg_dump para exportar una base de datos completa a un archivo SQL de texto plano.
  • Utilizar psql para restaurar una base de datos desde un archivo de copia de seguridad SQL en una nueva base de datos.
  • Hacer una copia de seguridad de una tabla individual de una base de datos utilizando la opción -t con pg_dump.
  • Restaurar una tabla individual en una base de datos.

Dominar estos comandos le proporciona la confianza para administrar y proteger sus datos de PostgreSQL de manera efectiva.