2012-08-13 63 views
5

我使用的是openERP v6.1,我想知道哪个是自动备份数据库的最佳选择(比如说每日备份)哪一种是自动备份的最佳方式?

管理数据库中Web UI的备份选项对于一步恢复并创建数据库。当然,它必须手动完成。有没有什么办法可以自动化这个过程,并得到相同类型的备份? (我不知道什么样的文件导出为* .dump)

我试着做pg_dump,但我无法从Web UI导入该文件(我试过原始的SQL文本和gziped),当然必须是不同的格式。我有一些问题试图使用psql将pg_dump备份导入到postgres。我可以恢复备份,但当访问网站的网站时,我看到一个openERP空

有关最佳做法的任何想法做到这一点?

+0

我观察到了同样的问题。当我从PostgreSQL 9.1升级到9.2时,我从9.1中删除了数据库并将它们恢复到9.2。对于9.2,OpenERP没有识别这些数据库。 – Martin 2013-08-13 12:49:13

回答

1

您可以创建一个python脚本,将您的数据库备份到特定的目录中。 ,然后做一个导致你的python脚本每天执行的cron作业。

您还可以从apps.openerp.com下载模块: http://apps.openerp.com/addon/1759

2

假如你通过一个系统级的cron任务访问服务器上运行的OpenERP,我建议使用的pg_dump(与“自定义”格式) 。

理由:

  • 你会得到更好地控制您的备份,包括在必要连续存档和时间点恢复(见http://www.postgresql.org/docs/9.1/static/backup.html

  • 你不会依赖于OpenERP的是启动并运行备份。尤其是,OpenERP以而着名,不是在重新启动后运行其计划任务,直到与服务器建立第一个连接,在某些情况下,这可能是一个真正的痛苦。

关于你提到的“尝试导入备份的pg_dump和psql一起Postgres的问题,我可以还原备份,但随后当访问网内的网站,我看到了一个空的OpenERP”,你必须告诉我们更多地了解您使用的命令。我从来没有使用过我的OpenERP数据库使用pg_dump/pg_restore的问题。

0

关于你提到的“尝试导入pg_dump的备份psql一起Postgres的问题,我可以还原备份,但随后当访问网内的网站,我看到了OpenERP的空”

你必须创建DB和代表openerp postgres用户运行psql。

0

创建PostgreSQL数据库的自动备份

  1. 下家创建一个文件夹直供

    mkdir database_backup 
    

2。创建新的文件

nano pg-backup.sh 

写入该文件内这个代码

#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  
  • 现在运行此命令

    ​​
  • 现在运行这小时备份命令

    sudo crontab -e 
    

    加入这一行

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

    为了创建每日备份

    您可以使用下面创建一个每日备份命令

    sudo crontab -e 
    

    添加以下行到编辑的文件并将其保存。

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

    执行此操作时,您应定义下创建PostgreSQL数据库 root用户现在如果你想与Postgres的用户恢复您的数据库intoo OpenERP的

    登录,然后运行该命令

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

    非常好的解决方案 – 2014-09-30 12:12:42

    1

    这是一个解决方案,用于对运行DSM5.2的Synology服务器上部署的一个感兴趣的OpenERP7数据库进行自动备份。该解决方案复制了使用OpenERP用户界面手动备份数据库的方式。为了实施该解决方案,有必要使用SSH访问Synology NAS文件系统。可以调整参数以适应最终用户的需求。

    #!/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 
    
    相关问题