Me resulta tedioso tener que hacer una copia de seguridad de las bases de datos todas las semanas. Y también creo que las copias de seguridad semanales deberían convertirse en copias de seguridad diarias. Si tuviera que hacer eso, no quiero hacerlo manualmente. ¿Cuál es la mejor manera de automatizar diariamente el respaldo de las bases de datos PostgreSQL?
22
Respuestas:
lo mismo que haces para cualquier otra tarea repetitiva que se pueda automatizar: escribes un script para hacer la copia de seguridad y luego configuras un trabajo cron para ejecutarlo.
un script como el siguiente, por ejemplo:
(Nota: debe ejecutarse como usuario de postgres, o cualquier otro usuario con los mismos privilegios)
EDITAR: el
pg_dumpall -D
interruptor (línea 27) está en desuso, ahora reemplazado con--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features
fuente
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Recargar con
o
Uso
split
. lossplit
comando le permite dividir la salida en partes de tamaño aceptable para el sistema de archivos subyacente. Por ejemplo, para hacer trozos de 1 megabyte:Recargar con
Podrías tirar uno de esos en
/etc/cron.hourly
Procedente de http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
fuente
split -C
, para que una línea nunca se divida. La depuración de una restauración fallida es más fácil.Cualesquiera que sean los comandos que emita "a mano", escríbalos en el script y ponga la llamada a este script en cron o en el programador que utilice.
Por supuesto, puede hacer que el guión sea más elegante, pero en general, creo que llegará allí: comience de manera simple y luego refine.
El guión más simple posible:
Guárdelo como /home/randell/bin/backup.sh, agregue a cron:
fuente
Si desea hacer una copia de seguridad de un clúster completo con una carga mínima del sistema, simplemente puede tar el directorio raíz del clúster postgresql. por ejemplo:
ese es el grueso de mi script de respaldo.
fuente
en caso de que alguien tenga que hacer una copia de seguridad de sus postgres en una máquina Windows sin la ayuda de Cygwin, etc. Tengo un archivo por lotes que hace el trabajo bastante bien.
esto hará una copia de seguridad de las bases de datos en archivos individuales en su propio directorio todos los días
fuente