2012-08-13 64 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 
    
    相關問題