2012-08-13 24 views
5

estoy usando v6.1 OpenERP y quería saber cual es la mejor alternativa para hacer copias de seguridad automatizadas de la base de datos (digamos copias de seguridad diarias)¿Cuál es la mejor manera de hacer respaldos automáticos?

La opción de copia de seguridad en la interfaz de usuario web de Manejo de Bases de Datos en que es genial restaurar y crear la base de datos en un solo paso. Por supuesto, tiene que hacerse manualmente. ¿Hay alguna manera de automatizar este proceso y obtener como resultados el mismo tipo de copias de seguridad? (No estoy seguro de qué tipo de archivo exporta como * .dump)

Intenté hacer pg_dump pero no puedo importar ese archivo (probé el texto sql en bruto y gziped) desde la interfaz de usuario web, por supuesto debe ser diferentes formatos. Y tengo algunos problemas al tratar de importar una copia de seguridad pg_dump a postgres con psql. Puedo restaurar la copia de seguridad pero luego cuando accedí al sitio en la web, vi un openERP vacío

¿Alguna idea sobre las mejores prácticas para hacer esto?

+0

He observado el mismo problema. Cuando actualicé de PostgreSQL 9.1 a 9.2, volqué las bases de datos de 9.1 y las restauré a 9.2. Para 9.2, OpenERP no reconoció esas bases de datos. – Martin

Respuesta

1

Puede crear una secuencia de comandos python que respaldará su base de datos en un directorio particular. y luego crea un trabajo cron que hace que tu script python se ejecute diariamente.

También puede descargar el módulo de apps.openerp.com: http://apps.openerp.com/addon/1759

2

Suponiendo que tenga acceso al servidor que ejecuta OpenERP, recomiendo el uso de pg_dump (con el formato de "costumbre") a través de una tarea cron nivel del sistema .

Justificación:

  • obtendrá un mayor control sobre la copia de seguridad, incluyendo en su caso archivado continua y el punto en el tiempo de recuperación (ver http://www.postgresql.org/docs/9.1/static/backup.html)

  • que no dependerá de OpenERP siendo en funcionamiento para que las copias de seguridad sucedan. Especialmente, OpenERP es conocido por no ejecutando sus tareas programadas después de reiniciar hasta que se realice una primera conexión con el servidor, lo que en algunos casos puede ser un verdadero problema.

En cuanto a sus "problemas tratando de importar una copia de seguridad pg_dump a postgres con psql. Puedo restaurar la copia de seguridad, pero luego, cuando el acceso al sitio en la web, vi un OpenERP vacío", tendrá que contar nosotros un poco más sobre los comandos que usaste. Nunca tuve problemas al usar pg_dump/pg_restore con mis bases de datos de OpenERP.

0

En cuanto a sus "problemas tratando de importar una copia de seguridad pg_dump a postgres con psql. Puedo restaurar la copia de seguridad, pero luego, cuando el acceso al sitio en la web, vi un OpenERP vacío"

Tienes que crear DB y ejecutar psql en nombre del usuario de opennerp postgres.

0

Para crear la copia de seguridad automática de la base de datos PostgreSQL

  1. Crear una carpeta en el hogar directry

    mkdir database_backup 
    

2.Crear nuevo archivo

nano pg-backup.sh 

escribir este código dentro de ese archivo

#enable this option, if you are creating hourly backup 
if [ ! -d "$2/`date +%F-%H`" ]; then 
mkdir $2/`date +%F-%H` 
pg_dump $1 > $2/`date +%F-%H`/$1.sql 
else 
echo "Do not run this script manually !" 
fi 

#enable this option, if you are creating daily backup 
if [ ! -d "$2/`date +%F`" ]; then 
mkdir $2/`date +%F` 
pg_dump $1 > $2/`date +%F`/$1.sql 
else 
echo "Do not run this script manually !" 
fi  
  1. Ahora ejecute este comando

    chmod 755 pg_backup.sh 
    

Ahora ejecutar este comando para la copia de seguridad de hora

sudo crontab -e 

añadir esta línea

@hourly /home/openerp/database_backup/pg_backup.sh database_name /home/openerp/database_backup/ 

Para la creación de copia de seguridad diaria

Se puede crear una copia de seguridad diaria mediante el siguiente comandos

sudo crontab -e 

Añadir debajo de las líneas a ese archivo editado y guardarlo.

 @daily /home/openerp/database_backup/pg_backup.sh database_name /home/openerp/database_backup/ 

para realizar esta acción debe definida para crear el usuario root en la base de datos PostgreSQL Ahora bien, si desea restaurar su intoo base de datos de OpenERP

inicio de sesión con postgres usuario ejecute este comando

psql -username <openerp_database_user> -dbname <New_database_name> -f <path_of_backuped_.sql_file> 
+0

Muy buena solución –

1

Esta es una solución desarrollada para realizar copias de seguridad automáticas de una base de datos OpenERP7 de interés desplegada en un recuadro de Synology que ejecuta DSM5.2. Esta solución replica la forma en que se realiza una copia de seguridad de una base de datos manualmente utilizando la interfaz de usuario de OpenERP. Para implementar la solución, es necesario utilizar SSH para obtener acceso al sistema de archivos NAS de Synology. Los parámetros pueden ajustarse para adaptarse a las necesidades del usuario final.

#!/bin/sh 
# Synology OpenERP database backup utiliy. Specify variable information below. 
# Run at /etc/crontab at the desired interval. 
DIR=/volume1/OpenERP_Backup/ 
DATESTAMP=$(date +"%Y-%m-%d")           
DB_USER=OPENERP7               
DATABASE=Demo 

# create backup dir if it does not exist       
mkdir -p ${DIR} 

# remove all backups except the $KEEP latest      
KEEP=7               
BACKUPS=`find ${DIR} -name "${DATABASE}_*.dump" | wc -l | sed 's/\ //g'` 
while [ $BACKUPS -ge $KEEP ]            
do                  
    ls -tr1 ${DIR}${DATABASE}_*.dump | head -n 1 | xargs rm -f    
    BACKUPS=`expr $BACKUPS - 1`           
done 

# dump the database in a file          
FILENAME=${DIR}${DATABASE}_${DATESTAMP}.dump       
/usr/syno/pgsql/bin/pg_dump --format=c --no-owner --username=${DB_USER} 
--file=${FILENAME} ${DATABASE} 

#Development Notes 
#Notes on how OpenERP handles backup & restore: 
#For backup 
#pg_dump --format=c --no-owner --username=<> --host=<> --port=<> <dbname> 
#For restore: 
#pg_restore --no-owner --dbname=<> 

#Notes on how Synology DSM handles crontab jobs: 
#Run script by assigning job to the crontab. Crontab on Synology NAS can 
be found at: 
#/etc/crontab 
#crontab entry would look something like the following: 
#10 1 * * * root sh /volume1/OpenERP_Backup/backup.sh 
Cuestiones relacionadas