$customHeader
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »

Geographically Separate Locations

If you are considering a backup strategy for Production Data, do consider storing the backup offsite. A geographically different location ensures that events like flooding or fire, don't destroy all the backups too!

Please read this document on how to perform an encrypted backup on a USB.

DB Backup using bahmni command line tool (available from v0.81 onwards)

'bahmni' command line tool will be available in the machine where we install the 'bahmni-installer' rpm -Install Bahmni on CentOS#Step2:PerformthefollowingstepstoinstalltheRPMs

To take db-backup, following command has to be executed:

bahmni -i local db-backup

If custom inventory file is setup, following command has to be executed:

bahmni -i <inventory_file_name> db-backup


The command will take the backup of each database into a seperate file in the machine where the databases are present at file location /db-backup as below:


Optionally, it would also allow you to copy the backup to the machine from where the command is executed by shooting the following question:

Do you want to copy db backup to local machine in /db-backup directory? y/N: y

This would be useful in multi-machine setup where databases are present at different location. When all databases are present in the same machine from which command is executed, 'N' can be given as the answer to the above question.

DB Restore using bahmni command line tool (available from v0.81 onwards)

To restore the database, `db-restore` command from bahmni command line tool can be used. The command can restore only one database at a time and it will drop the database if already present and then restore the specified dump file.


The syntax of db-restore command is as follows:


bahmni -db <database_name> -path <zipped_sql_file_path> db-restore
 
# If custom inventory file is present
bahmni -i <inventory_file_name> -db <database_name> -path <zipped_sql_file_path> db-restore


#Examples:
bahmni -i jss -db openmrs -path /db-backup/openmrs_dump_20160525-155357.sql.gz db-restore
bahmni -i jss -db clinlims path /db-backup/clinlims_dump_20160525-155359.sql.gz db-restore


Automated db-backup

Clone the repo bahmni-environment from the URL: https://github.com/Bahmni/bahmni-environment to obtain the scripts for this purpose.


To Backup the MySQL Instance
bahmni-environment/scripts/backup-mysql.sh [db_password] [backup_dir]
# eg. bahmni-environment/scripts/backup-mysql.sh mYp@ssw0rd /tmp/backup
To Backup the Postgres DB instance
bahmni-environment/scripts/backup-pgsql.sh [backup_dir]
# eg. bahmni-environment/scripts/backup-pgsql.sh /tmp/backup


If you want to setup an automated schedule to backup, then you can create a crontab entry to trigger this command periodically. For example:


Auto-schedule backups of DB
# Edit the crontab file of root user
crontab -u root -e 
 
# Make entry as (for running twice a day at 2PM, and 10PM)
00 14,22 * * * sudo bahmni-environment/scripts/backup-mysql.sh [db_password] [backup_dir]

00 14,22 * * * sudo bahmni-environment/scripts/backup-pgsql.sh [backup_dir]
 
# eg. 00 14,22 * * * sudo bahmni-environment/scripts/backup-mysql.sh mYp@ssw0rd /tmp/backup
# eg. 00 14,22 * * * sudo bahmni-environment/scripts/backup-pgsql.sh /tmp/backup

crontab may fail for sudo

cron may fail silently for above command on some installations, since we use the sudo command in our scripts. To enable sudo commands to run in cron, you need to disable requiretty. Run visudo command, and comment out the line: Defaults requiretty

For more details on this read: http://unix.stackexchange.com/questions/49077/why-does-cron-silently-fail-to-run-sudo-stuff-in-my-script

Auto delete of old files
# Add this entry in crontab to delete files older than 15 days from /backup folder (every evening at 6 PM)
00 18 * * * /usr/bin/find /backup -type f -mtime +15 -exec /bin/rm -f {} \;

For more examples on crontab entries read this: crontab


To restore DB, use the following commands; also ensure that the following services are stopped before running:

  • If you have installed with the older shell script based installers, tomcat, openerp and apache must be stopped.
  • If you have installed via the new RPM based installers, openerp, openmrs, bahmni-lab and apache must be stopped.
  • Once restored, restart the corresponding services again.

Restore Databases
# Unzip the backups:
gzip -d [filename.gz]
 
# Restore MYSQL (script is in bahmni-environment)
./scripts/restore-mysql.sh [mysql-backup-filename]
 
# Restore Postgres (script is in bahmni-environment)
./scripts/restore-pgsql.sh [pgsql-backup-filename]
 
# If pgsql restore fails because of open connections, then you can restart postgres by executing:
sudo /etc/rc.d/init.d/postgresql-9.2 stop
sudo /etc/rc.d/init.d/postgresql-9.2 start 
  • No labels