Copia de seguridad y restauración de PostgreSQL

PostgreSQLPostgreSQLBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo realizar copias de seguridad y restaurar bases de datos PostgreSQL. El laboratorio cubre técnicas esenciales para salvaguardar sus datos, incluyendo la exportación de una base de datos utilizando pg_dump, la restauración de una base de datos utilizando pg_restore, y la copia de seguridad de tablas específicas.

Comenzará creando una base de datos de ejemplo llamada mydatabase. Luego, exportará esta base de datos a un archivo SQL utilizando el comando pg_dump. A continuación, explorará cómo restaurar una base de datos desde un archivo de copia de seguridad utilizando pg_restore. Finalmente, aprenderá cómo hacer copias de seguridad de tablas específicas dentro de una base de datos y verificar la integridad de los datos restaurados.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/db_setup("Create New Database") postgresql/PostgreSQLGroup -.-> postgresql/db_access("Connect To Database") postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table") postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row") postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data") postgresql/PostgreSQLGroup -.-> postgresql/row_drop("Delete One Row") subgraph Lab Skills postgresql/db_setup -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} postgresql/db_access -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} postgresql/table_init -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} postgresql/row_add -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} postgresql/data_all -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} postgresql/row_drop -.-> lab-550949{{"Copia de seguridad y restauración de PostgreSQL"}} end

Crear y poblar una base de datos

En este paso, creará una base de datos PostgreSQL llamada mydatabase y la poblará con algunos datos de ejemplo. Esta base de datos se utilizará para los ejercicios de copia de seguridad y restauración en los siguientes pasos.

Primero, cree la base de datos mydatabase utilizando el siguiente comando:

sudo -u postgres psql -c "CREATE DATABASE mydatabase;"

Este comando se conecta al servidor PostgreSQL como el usuario postgres y ejecuta el comando SQL CREATE DATABASE mydatabase.

A continuación, conéctese a la base de datos mydatabase utilizando el comando psql:

sudo -u postgres psql -d mydatabase

Ahora debería estar en el shell psql, conectado a la base de datos mydatabase. Verá un prompt como mydatabase=#.

Ahora, cree una tabla llamada users con una columna id y name:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

Este comando SQL crea una tabla llamada users con dos columnas: id (un entero que se incrementa automáticamente) y name (una cadena de texto).

A continuación, inserte algunos datos de ejemplo en la tabla users:

INSERT INTO users (name) VALUES ('Alice');
INSERT INTO users (name) VALUES ('Bob');

Estos comandos SQL insertan dos filas en la tabla users, con los nombres 'Alice' y 'Bob'.

Finalmente, cree otra tabla llamada products e inserte algunos datos:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

INSERT INTO products (name) VALUES ('Laptop');
INSERT INTO products (name) VALUES ('Tablet');

Para verificar que las tablas y los datos se han creado correctamente, puede ejecutar las siguientes consultas SQL:

SELECT * FROM users;
SELECT * FROM products;

Debería ver los datos que acaba de insertar.

Salga del shell psql escribiendo:

\q

Ahora está de vuelta en la terminal de Linux.

Exportar la base de datos

En este paso, exportará la base de datos mydatabase a un archivo SQL utilizando el comando pg_dump. Este archivo contendrá los comandos SQL necesarios para recrear la base de datos.

Ejecute el siguiente comando para exportar la base de datos:

pg_dump -U postgres -d mydatabase -f ~/project/mydatabase.sql

Este comando utiliza la utilidad pg_dump para conectarse a la base de datos mydatabase como el usuario postgres y exportar la base de datos a un archivo llamado mydatabase.sql en su directorio ~/project.

Para verificar que el archivo se creó correctamente, puede listar el contenido de su directorio ~/project:

ls ~/project

Debería ver mydatabase.sql en la salida.

También puede ver las primeras líneas del archivo de copia de seguridad utilizando el comando head:

head ~/project/mydatabase.sql

Esto le mostrará el comienzo del script SQL que fue creado por pg_dump.

Restaurar la base de datos

En este paso, restaurará la base de datos mydatabase desde el archivo de copia de seguridad mydatabase.sql en una nueva base de datos llamada newdatabase.

Primero, cree la base de datos newdatabase:

sudo -u postgres psql -c "CREATE DATABASE newdatabase;"

Ahora, restaure la base de datos desde el archivo de copia de seguridad:

pg_restore -U postgres -d newdatabase ~/project/mydatabase.sql

Este comando utiliza la utilidad pg_restore para conectarse a la base de datos newdatabase como el usuario postgres y restaurar la base de datos desde el archivo mydatabase.sql.

Para verificar que la base de datos se restauró correctamente, conéctese a la base de datos newdatabase utilizando psql:

sudo -u postgres psql -d newdatabase

Y luego liste las tablas:

\dt

Debería ver las tablas users y products listadas.

También puede consultar los datos en las tablas para verificar que se restauraron correctamente:

SELECT * FROM users;
SELECT * FROM products;

Debería ver los mismos datos que insertó en el Paso 1.

Salga del shell psql:

\q

Copia de seguridad y restauración de una sola tabla

En este paso, aprenderá cómo hacer una copia de seguridad y restaurar una sola tabla de una base de datos PostgreSQL. Esto puede ser útil si solo necesita hacer una copia de seguridad de una parte específica de su base de datos.

Primero, hagamos una copia de seguridad solo de la tabla users de la base de datos mydatabase:

pg_dump -U postgres -d mydatabase -t users -f ~/project/users_only.sql

Este comando utiliza la opción -t para especificar que solo se debe hacer una copia de seguridad de la tabla users.

Ahora, restauremos esta tabla en la base de datos newdatabase. Primero, elimine la tabla users existente en newdatabase:

sudo -u postgres psql -d newdatabase -c "DROP TABLE IF EXISTS users;"

Luego, restaure la tabla users desde el archivo users_only.sql:

pg_restore -U postgres -d newdatabase ~/project/users_only.sql

Para verificar que la tabla se restauró correctamente, conéctese a la base de datos newdatabase utilizando psql:

sudo -u postgres psql -d newdatabase

Y luego liste las tablas:

\dt

Debería ver la tabla users listada, pero no la tabla products (ya que solo restauramos la tabla users).

También puede consultar los datos en la tabla users para verificar que se restauró correctamente:

SELECT * FROM users;

Debería ver los mismos datos que estaban en la tabla users en la base de datos mydatabase.

Salga del shell psql:

\q

Resumen

En este laboratorio, ha aprendido cómo hacer copias de seguridad y restaurar bases de datos PostgreSQL utilizando las utilidades pg_dump y pg_restore. Aprendió cómo:

  • Crear una base de datos y llenarla con datos.
  • Exportar una base de datos completa a un archivo SQL utilizando pg_dump.
  • Restaurar una base de datos desde un archivo SQL utilizando pg_restore.
  • Hacer una copia de seguridad de una sola tabla de una base de datos utilizando pg_dump.
  • Restaurar una sola tabla en una base de datos utilizando pg_restore.

Estas son habilidades esenciales para cualquier administrador de bases de datos PostgreSQL.