Configuring Database and File System State Persistence
This section explains how to prevent the loss of data that can result from a system failure by persisting the state of WSO2 SP periodically either into a database system or into the file system.
Prerequisites
Before configuring database persistence, the following prerequisites must be completed.
One or more Siddhi Applications must be running in the WSO2 SP server.
A working RDBMS instance that can be used for data persistence must exist.
The requirements of the datasource must be already defined
.Database persistence involves updating the databases connected to WSO2 Steam Processor with the latest information relating to the events that are being processed by WSO2 SP at a given time.
Configuring database system persistence
The supported databases are H2, MySQL, Postgres, MSSQL and Oracle. The relevant jdbc driver jar should be downloaded and added to the <SP_HOME>/lib directory to prior to using database system persistence.
To configure periodic data persistence, update the <SP_HOME>/conf/worker/deployment.yaml file under state.persistence as follows:
Parameter | Purpose | Required Value |
|---|---|---|
| This enables data persistence. |
|
| The time interval in minutes that defines the interval in which state of Siddhi applications should be persisted | 1 |
| The number of revisions to keep in the system. When a new persist takes place, the old revisions are removed. | 3 |
| The persistence store. |
|
| The datasource to be used in persisting the state. The provided datasource should be properly defined in the deployment.yaml. For detailed instructions of how to configure a datasource, see Configuring Datasources. |
|
| The table that should be created and used for the persisting of the state. |
|
The following is a sample segment of the required configurations in the <SP_HOME>/conf/worker/deployment.yaml file to configure file system persistence.
Sample deployment.yaml segment
state.persistence:
enabled: true
intervalInMin: 1
revisionsToKeep: 3
persistenceStore: org.wso2.carbon.stream.processor.core.persistence.DBPersistenceStore
config:
datasource: <DATASOURCE NAME> # A datasource with this name should be defined in wso2.datasources namespace
table: <TABLE NAME>
Configuring file system persistence
This section explains how to persist the states of Siddhi applications during a required time interval in the file system in order to maintain back-ups. To configure state persistence, update the <SP_HOME>/conf/worker/deployment.yaml file under state.persistence as follows:
Parameter | Purpose | Required Value |
|---|---|---|
| This enables data persistence. |
|
| The time interval in minutes that defines the interval in which state of Siddhi applications should be persisted |
|
| The number of revisions to keep in the system. When a new persist takes place, the old revisions are removed. |
|
| The persistence store. |
|
| A fully qualified folder location to where the revision files should be persisted. |
|
The following is a sample segment of the required configurations in the <SP_HOME>/conf/worker/deployment.yaml file to configure file system persistence.
Sample deployment.yaml segment
state.persistence:
enabled: true
intervalInMin: 1
revisionsToKeep: 2
persistenceStore: org.wso2.carbon.stream.processor.core.persistence.FileSystemPersistenceStore
config:
location: siddhi-app-persistence