2012-08-13 40 views
5

Tôi đang sử dụng openERP v6.1 và tôi muốn biết đó là giải pháp thay thế tốt nhất để tạo bản sao lưu tự động của DB (ví dụ: sao lưu hàng ngày)Cách tốt nhất để thực hiện sao lưu tự động là gì?

Tùy chọn Sao lưu trong giao diện người dùng web trong Quản lý cơ sở dữ liệu thật tuyệt vời khôi phục và tạo DB trong một bước. Tất nhiên nó phải được thực hiện bằng tay. Có cách nào để tự động hoá quá trình này và nhận được kết quả như một loại sao lưu không? (Tôi không chắc loại tệp mà nó xuất là * .dump)

Tôi đã thử làm pg_dump nhưng tôi không thể nhập tệp đó (tôi đã thử văn bản sql thô và gzip) từ giao diện người dùng web, tất nhiên phải là các định dạng khác nhau. Và tôi có một số vấn đề cố gắng để nhập một bản sao lưu pg_dump để postgres với psql. Tôi có thể khôi phục bản sao lưu nhưng sau đó khi truy cập trang web trong web, tôi thấy một openERP trống

Bất kỳ suy nghĩ nào về các phương pháp hay nhất để thực hiện việc này?

+0

Tôi đã quan sát cùng một vấn đề. Khi tôi nâng cấp từ PostgreSQL 9.1 lên 9.2, tôi đã xóa các cơ sở dữ liệu từ 9.1 và khôi phục chúng thành 9.2. Đối với 9.2, OpenERP không nhận ra những cơ sở dữ liệu đó. – Martin

Trả lời

1

Bạn có thể tạo tập lệnh python sẽ sao lưu DB của bạn vào Thư mục cụ thể. và sau đó thực hiện một công việc cron gây ra kịch bản python của bạn để thực thi hàng ngày.

Bạn cũng có thể tải về mô-đun từ apps.openerp.com: http://apps.openerp.com/addon/1759

2

Giả sử bạn có quyền truy cập vào các máy chủ chạy OpenERP, tôi khuyên bạn nên sử dụng pg_dump (với định dạng "tùy chỉnh") thông qua một nhiệm vụ cron cấp hệ thống .

Lý do:

  • bạn sẽ nhận được kiểm soát tốt hơn sao lưu của bạn, kể cả nếu cần thiết lưu trữ liên tục và thời điểm trong thời gian phục hồi (xem http://www.postgresql.org/docs/9.1/static/backup.html)

  • bạn sẽ không phụ thuộc vào OpenERP là lập và chạy cho các bản sao lưu xảy ra. Đặc biệt, OpenERP được biết là không phải chạy các tác vụ được lập lịch của nó sau khi khởi động lại cho đến khi kết nối đầu tiên được thực hiện với máy chủ, mà trong một số trường hợp có thể là một nỗi đau thực sự.

Về bạn "vấn đề cố gắng để nhập khẩu một bản sao lưu pg_dump để Postgres với psql. Tôi có thể khôi phục lại bản sao lưu nhưng sau đó khi truy cập các trang web trong các trang web, tôi thấy một OpenERP trống rỗng", bạn sẽ phải nói chúng tôi nhiều hơn một chút về các lệnh bạn đã sử dụng. Tôi đã không bao giờ có bất kỳ vấn đề bằng cách sử dụng pg_dump/pg_restore với cơ sở dữ liệu OpenERP của tôi.

0

Về bạn "vấn đề cố gắng để nhập khẩu một bản sao lưu pg_dump để Postgres với psql. Tôi có thể khôi phục lại bản sao lưu nhưng sau đó khi truy cập các trang web trong các trang web, tôi thấy một OpenERP trống rỗng"

Bạn phải tạo DB và chạy psql thay mặt cho người dùng postgres openerp.

0

Để Tạo sao lưu tự động của cơ sở dữ liệu postgresql

  1. Tạo một thư mục dưới nhà directry

    mkdir database_backup 
    

2.Tạo tập tin mới

nano pg-backup.sh 

ghi mã này bên trong tập tin đó

#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. Bây giờ chạy lệnh này

    chmod 755 pg_backup.sh 
    

Bây giờ chạy này lệnh sao lưu theo giờ

sudo crontab -e 

add dòng này

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

Để tạo sao lưu hàng ngày

Bạn có thể tạo một bản sao lưu hàng ngày sử dụng dưới lệnh

sudo crontab -e 

Thêm bên dưới dòng để mà tập tin chỉnh sửa và lưu nó.

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

để thực hiện hành động này, bạn nên định nghĩa để tạo tài khoản root dưới cơ sở dữ liệu postgresql Bây giờ nếu bạn muốn khôi phục intoo cơ sở dữ liệu của bạn OpenERP

đăng nhập với postgres người dùng sau đó chạy lệnh này

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

Giải pháp Rất Đẹp –

1

Đây là giải pháp được phát triển để tạo bản sao lưu tự động của một cơ sở dữ liệu OpenERP7 được quan tâm triển khai trên một hộp Synology chạy DSM5.2. Giải pháp này sao chép cách thức mà một cơ sở dữ liệu được sao lưu thủ công bằng cách sử dụng giao diện người dùng OpenERP. Để thực hiện giải pháp, cần sử dụng SSH để truy cập vào hệ thống tệp Synology NAS. Các thông số có thể được điều chỉnh cho phù hợp với nhu cầu của người dùng cuối.

#!/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 
Các vấn đề liên quan