Introducción
La pérdida de datos puede ser un revés importante para usted, especialmente dadas las sanciones del gobierno por multas por perder datos de usuario.
Para minimizar el daño resultante de un desastre físico o un ataque de piratas informáticos malintencionados, se considera necesario realizar copias de seguridad periódicas como medio de recuperación ante desastres.
PostgreSQL tiene enfoques fundamentalmente diferentes para realizar copias de seguridad de datos. Esto incluye:
- Copia de seguridad del sistema de archivos, que crea copias directas de los archivos que PostgreSQL usa para almacenar datos en la base de datos.
- Archivado continuo y recuperación en un momento determinado, haciendo copias de seguridad y restaurando registros según sea necesario y haciendo que la base de datos sea coherente al reproducir las entradas realizadas durante el último punto de control.
- Volcado SQL en el que se generan los comandos para la creación de la base de datos y se guardan en un archivo. Cuando se ejecuta este archivo, los comandos SQL se utilizarán para reconstruir la base de datos en una plantilla simple.
Esta guía le muestra cómo realizar una copia de seguridad y restaurar una base de datos mediante un volcado de SQL.
Antes de que empieces
Para realizar esta tarea, se deben cumplir las siguientes condiciones:
- Un usuario no root con privilegios sudo en un VPS o servidor dedicado que ejecuta el sistema operativo Ubuntu 18.04.
Paquete de software de base de datos PostgreSQL instalado y configurado en su VPS. Aprenderá a instalar el servidor de base de datos PostgreSQL en Ubuntu 18.04.
- Una base de datos de muestra o esquemas / tablas específicos que usaremos para respaldar y restaurar (opcional ya que estamos creando nuestra base de datos de muestra para respaldar y restaurar).
pasos
pg_dump es la utilidad de base de datos oficial de PostgreSQL que se utiliza para la copia de seguridad de la base de datos.
Creará su propia base de datos de muestra para realizar una copia de seguridad y restaurarla.
$ sudo -i -u postgres psql
# CREATEDATABASE sampledb; # c sampledb; # CREATETABLE sampleTable( # sampledb(# tableID SERIAL PRIMARY KEY, # sampledb(# firstname VARCHAR, # sampledb(# lastname VARCHAR, # sampledb(# age INT);
CREATETABLE
# CREATETABLE sampleTable2( # table2ID SERIAL PRIMARY KEY, # tableID INTREFERENCES sampleTable(tableID), # location VARCHAR, # monthsINT);
CREATETABLE
Respaldo
Cierre su base de datos y haga su copia de seguridad en un formato de texto simple y sin formato.
$ pg_dump sampledb > sampledb.sql
Si ve los datos volcados en el muestreadobEl archivo .sql debe tener un aspecto similar al siguiente extracto de todo el archivo.
... -- PostgreSQL database dump -- -- Dumped from database version 10.5 (Ubuntu 10.5-0ubuntu0.18.04) -- Dumped by pg_dump version 10.5 (Ubuntu 10.5-0ubuntu0.18.04) SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET check_function_bodies = false; SET client_min_messages = warning; SET row_security = off; -- -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: ...
Puede optar por guardar los datos en su VPS en un formato de archivo que sea más adecuado para bases de datos más grandes. Este es el método comprimido. Puede utilizar el siguiente comando.
Puede utilizar el siguiente archivo para comprimir el archivo en un formato binario comprimido.
$ pg_dump -Fc sampledb > sampledb.bak
También puede utilizar el siguiente comando para hacer una copia de seguridad de su base de datos en un formato de archivo tarball.
$ pg_dump -Ft sampledb > sampledb.tar
Restaurar
Ahora eliminará la base de datos de la vista de línea de comandos de PostgreSQL y saldrá.
# DROPDATABASE sampledb;
DROPDATABASE
# q
Pg_restore es la utilidad de base de datos proporcionada por PostgreSQL para restaurar su base de datos.
Tenga en cuenta que debe crear la base de datos en la que desea restaurar sus datos.
$ createdb sampledb
Si es de una plantilla, puede usar el siguiente comando si su base de datos está en formato de archivo .bak.
$ pg_restore -sampledb -Fc sampledb.bak
Si es un formato de archivo .tar, use el siguiente comando:
$ pg_restore -d sampledb -Ft sampledb.tar
Conclusión
Ha realizado una copia de seguridad y restaurado correctamente su base de datos utilizando el pg_dumpy utilidades de base de datos pg_restore.
Tenga en cuenta que este método solo hace una copia de seguridad de una base de datos a la vez y no hace una copia de seguridad de los distintos roles asignados, ya que se supone que no forman parte del alcance de la base de datos. Si desea realizar una copia de seguridad de cada base de datos, incluidas sus diversas funciones, puede utilizar la utilidad pg_dumpalldatabase en el siguiente formato:
$ pg_dumpall > dumpfile