|
This feature has been introduced in V0.88 of Bahmni. Please look at Known Issues with DB Backup and Restore in case there is an issue. |
Bahmni has different artifacts in the system like patient documents, patient images, DB data etc. There is a possibility that unwanted events may happen such as hard drive failure or data loss due to some wrong SQL (eg: delete sql) mistakenly run by an user. Bahmni as a product should provide mechanism to backup all the artifacts so that if any unwanted event happen then we should be able to recover from the backup so that business continue as usual at the earliest.
It is highly recommended that you keep the backup files in a separate external disk and away from the hospital location if possible – to avoid loss of all data in case of a Natural disaster like floods or earthquakes. You can provide the destination path for an external disk as long as you mount it successfully. It is also highly recommended to encrypt the external disk. Please refer Performing a Backup of Bahmni Data on USB or External Drive. |
If you are more comfortable with perform your own direct backups, then you can also look at the following documentation on how to perform DB backups here:
|
Right now Bahmni backup mechanism supports two categories name file backup and database backup. Below is the list of supported items
Patient images
Document images
Uploaded files
Uploaded lab results
PACS images
Report module generated files by Queue feature
MySQL databases
This will perform ONLY the DB backup and NOT of the other files (artifacts). |
When the backup tools for MySQL and Postgres are not installed then the backup will fall back to old way of DB backups by using following commands. The following commands will achieve same as mentioned in old way of DB backups.
Please replace the inventory_file_name with appropriate file name. For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=db --options=clinlims |
bahmni -i local backup --backup_type=db --options=openerp |
bahmni -i local backup --backup_type=db --options=openmrs |
If backrest tools are already installed, then uninstall them to perform oldway backup. To uninstall pgsql backup tool, execute the following commands sudo rm -f /usr/bin/pgbackrest sudo rm -f /usr/bin/pg_backrest sudo rm -rf /usr/lib/perl5/BackRest sudo rm -rf /usr/share/perl5/BackRest sudo rm -rf /usr/lib/perl5/pgBackRest sudo rm -rf /usr/share/perl5/pgBackRest To uninstall mysql backup tool, execute the following command yum list installed | grep xtrabackup|xargs yum remove -y |
Please replace the inventory_file_name with appropriate file name. For example, in the below examples local is the inventory file name.
bahmni -i local restore --restore_type=db --options=clinlims --strategy=dump --restore_point=clinlims_dump_20170215-150418.sql.gz |
bahmni -i local restore --restore_type=db --options=openerp --strategy=dump --restore_point=openerp_dump_20170215-150418.sql.gz |
bahmni -i local restore --restore_type=db --options=openmrs --strategy=dump --restore_point=openmrs_dump_20170221084218.sql.gz |
The backup tools for MySQL, Postgres and Artifacts have to be installed for the following commands. The Bahmni installation will take care of installing these tools based on provided configuration. Please refer Configure backup. |
In order to backup all the possible files and databases, please use the below mentioned command.
bahmni -i <inventory_file_name> backup --backup_type=all --options=all |
Please replace the inventory_file_name with appropriate file name. For Example, in the below example local is the inventory file name.
bahmni -i local backup --backup_type=all --options=all |
In order to schedule a backup one can use --schedule option available in command line which adds cron entry for the user to run the command as per schedule.
--schedule "30 2 * * 0" is an example schedule option that can be added to any of the backup commands. The backup in this case is scheduled for every Sunday 2.30 am |
bahmni -i <inventory_file_name> backup --backup_type=<file/db> --options=<options_possible> --strategy=<strategy> --schedule "* * * * *" |
bahmni -i local backup --backup_type=db --options=openmrs --strategy=full --schedule "30 2 * * 0" # Use the hash sign to prefix a comment # +---------------- minute (0 - 59) # | +------------- hour (0 - 23) # | | +---------- day of month (1 - 31) # | | | +------- month (1 - 12) # | | | | +---- day of week (0 - 7) (Sunday=0 or 7) # | | | | | # * * * * * command to be executed |
Taking Backup of all the Mysql Databases with single command is not supported yet. |
There are different configurations for mysql database backup command as mentioned below
Key | Default value | Available options | Mandatory |
---|---|---|---|
backup_type | all | This value should be db for database backup | No |
options | all | This Value can be either openmrs or bahmni-reports while taking mysql database backup. | No |
strategy | full | Possible values are full, incr. | No |
One can take full backup of particular mysql database by mentioning the database name.
For example, in the below sample command DBName should be replaced with the actual database name. Possible values supported right now are "openmrs" or "bahmni-reports". |
bahmni -i <inventory_file_name> backup --backup_type=db --options=<DBName> |
Please replace the inventory_file_name with appropriate file name and DBName with the database name. For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=db --options=openmrs |
bahmni -i local backup --backup_type=db --options=bahmni_reports |
Apart from the full backup, there is an option to take incremental backup. In case of incremental backup, strategy should be "incr"
bahmni -i <inventory_file_name> backup --backup_type=db --options=<DBName> --strategy=incr |
Please replace the inventory_file_name with appropriate file name and DBName with the database name. For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=db --options=openmrs --strategy=incr |
bahmni -i local backup --backup_type=db --options=bahmni_reports --strategy=incr |
Restoring all the mysql databases with single command is not supported yet. |
One can restore to any point (either full or incremental) in database given that the chosen restore points/files are available in configured restore path.
Restore Path is configured in /etc/bahmni-backrest.conf file. More about the configurations, please read Configure backup |
bahmni -i <inventory_file_name> restore --restore_type=db --options=<DBName> --strategy=<dump/pitr> --restore_point=<Backup foldername> |
Please replace the inventory_file_name with appropriate file name and DBName with the database name (either openmrs or bahmni_reports). For example, in the below examples local is the inventory file name.
There are different configurations for mysql database backup command as mentioned below. Please note that there are no default values for the below configurations
Key | Description | Mandatory | ||||||
---|---|---|---|---|---|---|---|---|
restore_type | Value should be "db" (in case of database restore) | Yes | ||||||
options | Available options for mysql database restore are "openmrs" or "bahmni_reports" | Yes | ||||||
strategy | Two types of strategies are available as explained below.
| Yes | ||||||
restore_point |
| Yes |
One can restore the database by providing dump gunzip file.
bahmni -i local restore --restore_type=db --options=openmrs --strategy=dump --restore_point=openmrs_dump_20170221084218.sql.gz |
One can restore the database by providing full backup file.
bahmni -i local restore --restore_type=db --options=openmrs --strategy=pitr --restore_point=20170220103125_full |
bahmni -i local restore --restore_type=db --options=bahmni_reports --strategy=pitr --restore_point=20170220103125_full |
In above examples, please replace 20170220103125_full (in case of full restore) with appropriate backup folder name available in the configured restore path and local with relevant inventory file name. |
If the file is not available in the restore path, it is expected that the restore command will fail. |
One can restore the database by providing incremental backup file.
bahmni -i local restore --restore_type=db --options=openmrs --strategy=pitr --restore_point=20170330103125_incr |
bahmni -i local restore --restore_type=db --options=bahmni_reports --strategy=pitr --restore_point=20170330103125_incr |
In above examples, please replace 20170330103125_incr (in case of incremental restore) with appropriate backup folder name available in the configured restore path and local with relevant inventory file name. |
If the file is not available in the restore path, it is expected that the restore command will fail. |
In this approach of taking backup of postgres database, we can't take individual postgres database backup (like clinlims or openerp). |
There are different configurations for postgres database backup command as mentioned below
Key | Default value | Available options | Mandatory |
---|---|---|---|
backup_type | all | This value should be db for database backup | No |
options | all | This Value can be either postgres while taking pgsql database backup. | No |
strategy | full | Possible values are full, incr. | No |
One can take full backup of particular postgres database by mentioning the database name under options which is postgres.
bahmni -i <inventory_file_name> backup --backup_type=db --options=<DBName> |
Please replace the inventory_file_name with appropriate file name and DBName with the database name (postgres). For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=db --options=postgres |
If the file is not available in the restore path, it is expected that the restore command will fail. |
Apart from the full backup, there is an option to take incremental backup. In case of incremental backup, strategy should be "incr"
bahmni -i <inventory_file_name> backup --backup_type=db --options=<DBName> --strategy=incr |
Please replace the inventory_file_name with appropriate file name and DBName with the database name. For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=db --options=postgres --strategy=incr |
If the file is not available in the restore path, it is expected that the restore command will fail. |
One can restore the entire pgsql backup at a time. In case of restoring an empty postgres database, first the db has to be restored using a full backup and then the desired incremental backup has to be applied on it.
In the newer way of restoring the pgsql backup, we can't restore individual databases (for elis and erp). |
bahmni -i <inventory_file_name> restore --restore_type=db --options=postgres --strategy=<pitr/dump> --restore_point=<DB backup folder name> |
There are different configurations for pgsql database backup command as mentioned below. Please note that there are no default values for the below configurations
Key | Description | Mandatory | ||||||
---|---|---|---|---|---|---|---|---|
restore_type | Value should be "db" (in case of database restore) | Yes | ||||||
options |
| Yes | ||||||
strategy | Two types of strategies are available as explained below.
| Yes | ||||||
restore_point |
| Yes |
Please replace the inventory_file_name with appropriate file name. For example, in the below examples local is the inventory file name.
One can restore the database by providing dump gunzip file.
bahmni -i local restore --restore_type=db --options=openerp --strategy=dump --restore_point=openerp_dump_20170221084218.sql.gz |
bahmni -i local restore --restore_type=db --options=openerp --strategy=dump --restore_point=openerp_dump_20170221084218.sql.gz |
One can restore the database by providing full backup file.
bahmni -i local restore --restore_type=db --options=postgres --strategy=pitr --restore_point=20170221-120904F |
In above examples, please replace 20170221-120904F (in case of full restore) with appropriate backup folder name available in the configured restore path and local with relevant inventory file name. |
If the file is not available in the restore path, it is expected that the restore command will fail. |
One can restore the database by providing incremental backup file.
bahmni -i local restore --restore_type=db --options=postgres --strategy=pitr --restore_point= 20170221-121423F_20170222-124131I |
In above examples, please replace 20170221-121423F_20170222-124131I (in case of incremental restore) with appropriate backup folder name available in the configured restore path and local with relevant inventory file name. |
If the file is not available in the restore path, it is expected that the restore command will fail. |
We can either take backup of all artifacts or individual artifacts. There are different configurations available as listed below
Key | Description | Mandatory | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
backup_type | This Value should be "file" incase of artifact backup | yes | ||||||||||||||||
options | all available values are listed below
| yes |
Please replace local with appropriate inventory file name. For example, in the below examples local is the inventory file name.
bahmni -i local backup --backup_type=file --options=all |
Please replace the inventory_file_name with appropriate file name and artifact_name with the relevant value.
bahmni -i <inventory_file_name> backup --backup_type=file --options=<artifact_name> |
bahmni -i local backup --backup_type=file --options="patient_images" //for patient images bahmni -i local backup --backup_type=file --options="document_images" //for document images bahmni -i local backup --backup_type=file --options="uploaded-files" //for uploaded files bahmni -i local backup --backup_type=file --options="uploaded_results" //for uploaded results bahmni -i local backup --backup_type=file --options="reports" //for reports bahmni -i local backup --backup_type=file --options="pacs_images" //for pacs images |
Backing up multiple artifacts (giving comma separated values without using all) is not supported right now. But, this can be achieved with a custom script with all the individual/specific backup commands. |
We can either restore all artifacts or individual artifacts.There are different configurations available as listed below
Key | Description | Mandatory | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
restore_type | This Value should be "file" incase of artifact restore | yes | ||||||||||||||||
options | all available values are listed below
| yes |
Please replace local with appropriate inventory file name. For example, in the below examples local is the inventory file name.
bahmni -i local restore --restore_type=file --options=all |
Please replace the inventory_file_name with appropriate file name and artifact_name with the relevant value.
bahmni -i <inventory_file_name> restore --restore_type=file --options=<artifact_name> |
bahmni -i local restore --restore_type=file --options="patient_images" //for patient images bahmni -i local restore --restore_type=file --options="document_images" //for document images bahmni -i local backup --restore_type=file --options="uploaded-files" //for uploaded files bahmni -i local restore --restore_type=file --options="uploaded_results" //for uploaded results bahmni -i local restore --restore_type=file --options="reports" //for reports bahmni -i local restore --restore_type=file --options="pacs_images" //for pacs images |