Backing up and restoring Flowable applications
A hot backup can be performed while the Flowable Work or Engage application is running. As Flowable applications persist data in several places (Database, Elasticsearch and optionally file system), it is recommended to backup the application data while it is idle and no users or background processes are active.
The backup of the data has to be performed strictly in the following order:
Binary content from the filesystem
Disclaimer: Creating the snapshots for all three systems is not an atomic operation and there will be a certain delay. Only in cases where the application is completely idle and no operation is running a backup will be fully consistent. If there is some data mismatch between the database and Elasticsearch, a reindex would be able to fix them. On the other hand, discrepancies between the filesystem and database (i.e. a file has been deleted) will require manual intervention for a fix. Cold backups do guarantee a 100% data consistency.
Each database type provides different tooling and commands to create backups. Refer to your database vendor documentation to proceed with this step.
This step is optional but recommended for applications with reasonable amount of data where a full reindex would delay too much the restoration process.
Please refer to the documentation of the installed ES version. If you’re using 6.X you can follow this link.
Back up the indices defined in (825-work-indexing.adoc#indexed-data). Please note that they might appear with a prefix if the property flowable.indexing.index-name-prefix has been set.
If the app makes use of custom indices (See 825-work-indexing.adoc#indexingCustomAliases), they should be included as well.
If your application is using a database content store strategy, you can skip this step.
Flowable stores binary data under a specific folder. Back up this information by saving the folder contents somewhere. Unless the property flowable.content.storage.root-folder has been set, by default this folder is named
content and can be found in the user home.
This type of backup is performed when the application is stopped and cannot be done when the application has strong uptime requirements. The process is as follows:
Stop all nodes running Flowable Work/Engage. Database and Elasticsearch nodes can still run.
Back up both database and file system. See the procedure of “Hot Backup”. This can be done in parallel.
Depending on the system load, allow some time for Elasticsearch to process the pending indexing operations. Then perform a snapshot as described in the “Hot Backup” section.
Once all data has been saved, start again all Flowable Work/Engage nodes.
If a system must be restored to a previous state, follow these steps:
If Flowable Work/Engage is still running, stop it.
If the content storage strategy is set to file system, then replace the contents of the root folder (
flowable.content.storage.root-folder) with the backed up data.
Restore the database from the backup as described by the database vendor procedure.
If an Elasticsearch snapshot is available, you can restore is as described by Elastic: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/modules-snapshots.html#_restore. Otherwise a reindex is required (See 825-work-indexing.adoc#indexingReindexing).
When all previous steps have been done, Flowable Work/Engage can be started.