Backing up and restoring Flowable applications

Creating a backup

Hot backup

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:

  • Database

  • Elasticsearch

  • 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.

Backing up the database system

Each database type provides different tooling and commands to create backups. Refer to your database vendor documentation to proceed with this step.

Creating an Elasticsearch snapshot

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.

Filesystem

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.

Cold backup

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.

Restoring from a backup

If a system must be restored to a previous state, follow these steps: