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.
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)
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:
/5 * * * * /etc/cron.hourly/script.py
Press button F2 and Enter
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.firstname.lastname@example.org 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
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""",
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
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
About This Community
|Asked: 3/30/13, 12:15 PM|
|Seen: 17579 times|
|Last updated: 11/6/15, 10:37 AM|