哪个是自动备份的最佳方式?

时间:2012-08-13 11:02:44

标签: openerp

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

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

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

有关最佳做法的任何想法吗?

5 个答案:

答案 0 :(得分:2)

假设您有权访问运行OpenERP的服务器,我建议您通过系统级cron任务使用pg_dump(使用“自定义”格式)。

理由:

  • 您可以更好地控制备份,包括必要的连续归档和时间点恢复(请参阅http://www.postgresql.org/docs/9.1/static/backup.html

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

关于“尝试使用psql将pg_dump备份导入postgres的问题。我可以恢复备份,但是当访问网站中的网站时,我看到一个openERP空”,你必须告诉我们更多关于你使用的命令。我的OpenERP数据库使用pg_dump / pg_restore时从未遇到任何问题。

答案 1 :(得分:1)

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

关于尝试使用psql将pg_dump备份导入postgres的问题。我可以恢复备份但是当访问网站中的网站时,我看到一个openERP为空&#34;

您必须代表openerp postgres用户创建数据库并运行psql。

答案 4 :(得分:0)

用于创建postgresql数据库的自动备份

  1. 在主目录下创建一个文件夹

    mkdir database_backup
    
  2. 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     
    
    1. 现在运行此命令

      chmod 755 pg_backup.sh
      
    2. 现在为hourlly backup运行此命令

          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用户 现在,如果你想恢复你的数据库ino openerp

      使用postgres用户登录然后运行此命令

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