콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
12 답글
42454 화면

I would like to set up an automated action to make a backup of the database every 30 minutes. I think that I must define an server action with python code. I need help with python code. thank you in advance.

아바타
취소

Do you mean the OpenERP database?

베스트 답변

Alternatively, you can create a crontab to invoke a python script which does backup. refere following script

import os
import time
import subprocess

dump_dir = '/home/openerp/db_backup'
db_username = 'openerp'
#db_password = ''
db_names = ['DB_NAME']

for db_name in db_names:
    try:
        file_path = ''
        dumper = " -U %s --password -Z 9 -f %s -F c %s  "
#        os.putenv('PGPASSWORD', db_password)
        bkp_file = '%s_%s.sql' % (db_name, time.strftime('%Y%m%d_%H_%M_%S'))
#        glob_list = glob.glob(dump_dir + db_name + '*' + '.pgdump')
        file_path = os.path.join(dump_dir, bkp_file)
        command = 'pg_dump' + dumper % (db_username, file_path, db_name)
        subprocess.call(command, shell=True)
        subprocess.call('gzip ' + file_path, shell=True)
    except:
        print "Couldn't backup database" % (db_name)
아바타
취소

It's a cool stuff!

작성자

Thanks Arif!

작성자

Yes it works for version 7.0.

작성자 베스트 답변

Thank you. Francesco I did bash sript and I run with crontab. I still have a little detail to be adjusted. I would like the file generated by crontab has a dynamic name for example: "namedatabase-date-hour-minute-seconde.dump". Is it possible?

On LINUX :

  • you have to deposit the script in the directory etc and give the access by doing this command in shell:

sudo mv path_to_the_script /etc/cron.hourly/

sudo chmod +x name_of_the_script.py

  • The crontab execute your script.py file for example every 5min after these commands in shell:

    crontab -e

    /5 * * * * /etc/cron.hourly/script.py

    Press button F2 and Enter

아바타
취소

use someting like namedatabase-$(date %H-%M-%S).dump. Look at man date for more options

베스트 답변

Hi.

I working around this problem, and I waste a couple of time to find the solution. I use this module with a small problem, but this is works as well, the issue what is coming from the server time zone. (UTC) So if you want to test it under 6.1 (may 7.0 same) please setting the next schedule time according UTC, and it will be works. This time issue, is true not just this module, all of that what is use Openerp server as cron controller. I do not have a karma to share a link. (module name is : "db_backup_ept - Database Auto-Backup & Backup Auto-Transfer to FTP server")

Other case the backup is a bit painful under Linux, with cron. The automation of backup you need to store the database data in .pgpass according by this: www.postgresql.org/message-id/490F6EDE.70502@nrc-cnrc.gc.ca you can find a good scripts at here: blog.ufsoft.org/2011/07/03/postgres-cron-backupsI want to avoid to store the db pass in cron script, because this is security hole.

Otherwise you can find some solution about Pgagent also, but I can't try it, because I didn't have a time for the trials.

Finally please never forget to test the restore. (I have a lot of problem with restore, under 9.1 from zip, now I can restore from plain text by psql command).

How to restore: psql NEW_DB_NAME -f SQL_FILE_NAME

아바타
취소

Hi klacus, I used db_backup_ept to auto and manual backup it created successfully. But I can't restore the database. The backup format is db_name.sql, how to restore this. help me...

I edit my answer. pls. check it.

Yes it is working Thanks...

베스트 답변

here is the video example 


아바타
취소
베스트 답변

You can use this addon for backup.

https://apps.odoo.com/apps/modules/13.0/auto_backup_odoo/

https://automaticbackup.odoo.com/

How to backup odoo database automatically

Available Backup DB/Filestore Modes:

  • Local
  • Remote Server
  • Google Drive
  • Dropbox

Module For backup ODOO databases and automating the backup process of ODOO.

  • Multiple Backup Modes
  • Filestore Backup
  • Backup ODOO Databases in specified path
  • Detailed Message Log
  • Backup Status Information and History
  • User can select the format to dump, either custom archive, plain text SQL or tar archive
  • Archive Backup Process
  • Repeat Missed Backup Process

Features

  • Dump ODOO Database in specified format
  • Output a custom archive suitable for input into pg_restore. This is the most flexible format in that it allows the reordering of loading data as well as to object definitions. This format is also compressed by default. Here we user gzip ie, test.gz, We also recommend you to select Custom, because Using the custom format you can restore single objects from a backup.
  • Output a plain-text SQL script file (the default). The plain text format is useful for very small databases with a minimal number of objects but other than that, it should be avoided.
  • Output a tar archive suitable for input into pg_restore. Using this archive format allows reordering and/or exclusion of database objects at the time the database is restored. It is also possible to limit which data is reloaded at restore time. we use tar with gzip
  • Backup Filestore
  • Multiple backup modes at sametime

Get Module From Here


Video Demonstration

아바타
취소
베스트 답변

Hi,

Does anyone has a python script for a Webpage in order to duplicate the DB and store it wherever instructed? I need to enable this functionality for one of my clients on their website and I don't have much clue of how to get this done.

Any help will be appreciated.

Many thanks.

아바타
취소
베스트 답변

I am using the information on the PostgreSQL Wiki ( look for Automated_Backup_on_Linux ) to schedule backups with cron. Works fine; set and forget.

Bart

아바타
취소
베스트 답변

I use this cron script:

#!/bin/bash

DIR=/var/backups/odoo
DB=database_name

rm $DIR/$DB*.tar
sudo -u openerp pg_dump --format t --file "$DIR/$DB $(date --rfc-3339 seconds).tar" $DB

Put it into /etc/cron.daily/ and give it execution permissions.

If you want to have more than one version of the database, you may put you own logic in the line rm $DIR/$DB*.tar.

아바타
취소
베스트 답변

You can use the module written by Tiny: auto_backup, works great! "name" : "Database Auto-Backup", "version" : "1.0", "author" : "Tiny", "website" : " "category" : "Generic Modules", "description": """The generic Open ERP Database Auto-Backup system enables the user to make configurations for the automatic backup of the database. User simply requires to specify host & port under IP Configuration & database(on specified host running at specified port) and backup directory(in which all the backups of the specified database will be stored) under Database Configuration.

Automatic backup for all such configured databases under this can then be scheduled as follows:

1) Go to Administration / Configuration / Scheduler / Scheduled Actions 2) Schedule new action(create a new record) 3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under page 'Technical Data' 4) Set other values as per your preference""",

아바타
취소
베스트 답변

If you're using a GNU/Linux system, the best way is to use cron + script bash to do postgres backup. If you want use python, you will use bash however.

P.S. 30 minutes is a time too short. 2 or 3 times at day are good.

아바타
취소
베스트 답변

In OpenERP V6.x there was an option to automatically back thorough scheduler with in OpenERP. Which automatically does the backup. I am not sure it still exist in V7. '

아바타
취소
베스트 답변

su openerp -s /bin/bash -c 'pg_dump $YOUR-DB' > $YOUR-DB.sql

아바타
취소
관련 게시물 답글 화면 활동
1
11월 23
4131
2
4월 22
2795
1
8월 19
8881
2
10월 16
6651
2
3월 15
8385