Copia de seguridad automática de postgres

20

¿Cuál es la mejor manera de respaldar automáticamente una base de datos de Postgres en Linux todos los días?

Liam
fuente

Respuestas:

11

Puedes usar pg_dumpasí:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Primero piense en configurar el .pgpassarchivo que contiene las contraseñas que se utilizarán si la conexión requiere una contraseña. Este archivo debe tener líneas del siguiente formato:

hostname:port:database:username:password

Y cada uno de los primeros cuatro campos puede ser un valor literal, o *, que coincide con cualquier cosa. Por ejemplo: *:*:*:postgres:pg_password.

Este .pgpassarchivo debe residir en el directorio de inicio ~ / y los permisos en él deben prohibir cualquier acceso al mundo o grupo; lograr esto por el comando chmod 0600 ~/.pgpass.

Ali Mezgani
fuente
¿se respalda automáticamente todos los días?
Anuj Patel
@indyaah: no, tendrías que ejecutar esto diariamente desde cron (o similar).
Bill Weiss
12

Ejecute pg_dumpall desde cron.

Bill Weiss
fuente
77
pg_dumpall es mejor que las otras respuestas porque esto respalda los objetos de su base de datos global. (Ej: usuarios, etc.) Los necesitará para recuperar completamente su base de datos y, si tiene una gran cantidad de estos, puede que no sea trivial recrearlos. Sin embargo, pg_dumpall podría ser excesivo para usted si simplemente desea hacer una copia de seguridad de una sola instancia de base de datos dentro de un clúster de base de datos múltiple porque pg_dumpall hará una copia de seguridad de cada instancia. Entonces ... como con la mayoría de las preguntas y respuestas de tecnología, depende.
KevinRae
1
Tiendo a combinar "base de datos" y "servidor de base de datos", este es un buen ejemplo. Asumí que el cartel querría respaldar todo el asunto. Buen punto.
Bill Weiss el
6

Prueba AutoPostgreSQLBackup . Es un archivo de script único, se puede configurar fácilmente según sus necesidades, realiza una programación diaria, semanal y mensual, registros por correo electrónico, archivo de registro o stdout, etc.


fuente
También uso AutoPostgreSQLBackup y está funcionando muy bien para mí ;-)
Matthieu
4

Si se trata de una base de datos razonablemente pequeña, y requisitos tan bajos en la copia de seguridad como una sola vez al día, simplemente ejecute pg_dump desde cron para volcar a un archivo local, y luego use lo que tenga para hacer una copia de seguridad de los archivos en la máquina para archivar el volcado. .

Magnus Hagander
fuente
4

pg_rman es una nueva herramienta, que ofrece copias de seguridad incrementales, que funciona para PostgreSQL 8.4 o posterior.

Adam Matan
fuente
2

Prueba astrails-safe . Sabe cómo hacer una copia de seguridad de mysql (mysqldump), postgres (pg_dump) o simplemente archivos simples (tar) con cifrado (gnupg) y cargarlos en S3 / Sftp.

Vitaly Kushner
fuente
1

pg_dump es una buena solución, pero si está intentando hacer una copia de seguridad de una gran cantidad de datos, tal vez esto pueda ayudar:

http://www.postgresql.org/docs/8.1/static/backup-online.html

que de hecho es una especie de registro 'en bruto', pero que puede ser útil como método de copia de seguridad incremental ...

Javier Novoa C.
fuente
1

Este es un script que realizará una copia de seguridad de cada base de datos individualmente, así como la información de inicio de sesión de usuario y de PostgreSQL GLOBALS, a menudo olvidada pero importante.

La importancia de esto es aprovechar la compresión que pg_dumpall no proporciona y los datos olvidados que pg_dump ignora.

Esto requerirá una configuración pgpass o similar como se describe aquí http://wiki.postgresql.org/wiki/Pgpass

Esta es la configuración para OSX, pero simplemente cambie las rutas del programa y funcionará bien.

Realiza copias de seguridad de / sqlbackups El script devolverá el tamaño / directorio del directorio y tiene puntos de interrupción que devolverán un estado distinto de cero si falla. Lo usé en combinación con pgAgent para hacer copias de seguridad diarias.

Guión redactado, perdón por eso :(

Silverfire
fuente
1

¿Por qué establecerse con una copia de seguridad diaria cuando puede tener fácilmente una recuperación en un punto en el tiempo con barman ?

Giovanni Toraldo
fuente
Dejaré que los moderadores decidan, pero creo que resucitar las preguntas de hace 5 años para conectar productos comerciales es una mala forma aquí.
gparent
ehm, es de código abierto: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo
Tienes razón, busqué en Google la cosa equivocada. Mi principal preocupación no era que, de todos modos, se trataba de sugerir una respuesta que realmente no era lo que el usuario preguntó 5 años después. Sin embargo, después de leer las otras respuestas, también parecen sugerir soluciones de respaldo similares, así que supongo que no es tan malo. Mi bandera probablemente será rechazada y la llamaremos un día: D
gparent