5

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

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

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

关于最佳实践的任何想法?

4

5 回答 5

2

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

理由:

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

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

关于您的“尝试使用 psql 将 pg_dump 备份导入到 postgres 的问题。我可以恢复备份,但是当在 Web 中访问该站点时,我看到 openERP 是空的”,您必须告诉我们更多关于命令的信息你用过。在我的 OpenERP 数据库中使用 pg_dump / pg_restore 时我从来没有遇到过任何问题。

于 2012-08-13T14:12:02.583 回答
1

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

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

于 2012-08-13T12:33:58.137 回答
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
于 2016-03-21T01:54:08.730 回答
0

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

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

    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     
  1. 现在运行这个命令

    chmod 755 pg_backup.sh
    

现在运行此命令进行每小时备份

    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 用户现在如果您想将数据库恢复到 openerp

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

psql -username <openerp_database_user> -dbname <New_database_name> -f <path_of_backuped_.sql_file>
于 2014-09-30T09:20:42.417 回答
0

关于您“尝试使用 psql 将 pg_dump 备份导入到 postgres 的问题。我可以恢复备份,但是当访问 Web 站点时,我看到 openERP 为空”

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

于 2014-04-18T09:01:06.677 回答