3. Upgrading your QuasarDB installation#
3.1. How QuasarDB is versionned#
3.1.1. Stable and beta#
Starting with QuasarDB 3.8, QuasarDB uses the following versionning logic:
Even version numbers indicate a stable version
Odd version numbers indicate a beta/in development version
As a beta version matures, it will eventually be branched into stable. During the development process, the beta version may introduce breaking changes, which is why running beta in production isn’t advised.
For example, 3.10 is a matured 3.9, and both are considered of the same generation. We give every engine generation the name of an ancient stoic philosopher, which is why 3.9 and 3.10 share the same name “Marcus Aurelius”.
3.2. Things to keep in mind#
Uprading is a one way process, which is why it’s very important to backup your database before doing an upgrade so that you can quickly go back should anything go wrong.
Upgrades between stable versions are supported, for example, from 3.8 to 3.10, from 3.10 to 3.12. When you are using a beta version, you accept that things may break between versions, especially at the beginning of the beta cycle. As the product matures, we do our best to prevent breaking changes, but there is no guarantee.
The longest part of the upgrading process is the upgrade of the database, when this applies, this is highly dependent on your disk speed and the amount of data stored.
3.3. Upgrading from 3.8 to 3.10#
3.3.1. Recommended procedure#
Backup your data
Shutdown all nodes in the cluster
Upgrade each node fom 3.8 to 3.10
- Run dbtool upgrade on every node
The upgrade process will perform low-level persistence schema migrations and is required to ensure optimal performance
You need to run the dbtool version you are upgrading to. Example: if you upgrade from 3.8.9 to 3.10.0, you need to run dbtool 3.10.0
You need to have as much free space as the database is currently using. Example: if your database is 100 GiB large, you need up to 100 GiB of additional free space for temporary files.
You can run dbtool on every node in parallel
QuasarDB must not be running
Restart the cluster after dbtool ran successfully on every node
(optional) Run a cluster compaction to leverage the improved compression
Ensure each node loads up correctly and that the log displays no error
Upgrade clients and APIs from 3.8 to 3.10
3.3.2. Licenses#
The license format is unchanged.
3.3.3. Client and daemon#
Statistics are now stored differently and grouped by UID, meaning that upgrading to QuasarDB 3.10 will reset your cluster statistics.
Compaction and trimming are now two seperate commands. Trimming deletes obsolete version, compaction is a lower-level operation related to the LSM tree.
3.3.4. Persistence#
The backend engine has been upgraded to RocksDB Cloud 6.5.3 and backward compatibility is thus not guaranteed.
A 3.10 node can load the data stored by a 3.8 node.
A 3.8 node cannot load the data stored by a 3.10 node.
3.3.5. Network#
A 3.8 client cannot connect to a 3.10 cluster.
A 3.10 client cannot connect to a 3.8 cluster.
3.4. Upgrading from 3.7 to 3.8#
3.4.1. Recommended procedure#
Backup your data
Shutdown all nodes in the cluster
Upgrade each node fom 3.7 to 3.8
- Run dbtool repair on every node
The repair process will perform low-level persistence schema migrations and is required to ensure optimal performance
You need to run the dbtool version you are upgrading to. Example: if you upgrade from 3.7.0 to 3.8.3, you need to run dbtool 3.8.3
You need to have as much free space as the database is currently using. Example: if your database is 100 GiB large, you need up to 100 GiB of additional free space for temporary files.
You can run dbtool on every node in parallel
QuasarDB must not be running
Restart the cluster after dbtool ran successfully on every node
Ensure each node loads up correctly and that the log displays no error
Upgrade clients from 3.7 to 3.8
3.4.2. Licenses#
The license format is unchanged.
3.4.3. Client and daemon#
QuasarDB is now built to target Haswell architectures. It was previously built with a Westemere architecture as a target. If your CPU architecture is older than Haswell, you need to use the Core2 build. Failure to do so may results in “illegal instruction” fatal error.
This applies to client and server binaries.
3.4.4. Persistence#
Due to a RocksDB upgrade, new database will use a new index format that cannot be read by previous QuasarDB versions.
A 3.8 node can load the data stored by a 3.7 node.
A 3.7 node cannot load the data stored by a 3.8 node.
3.4.5. Network#
A 3.7 client cannot connect to a 3.8 cluster.
A 3.8 client cannot connect to a 3.7 cluster.
3.5. Upgrading from 3.6 to 3.7#
3.5.1. Recommended procedure#
Backup your data
Shutdown all nodes in your cluster
Upgrade each node fom 3.6 to 3.7
Restart the cluster
Ensure each node loads up correctly and that the log displays no error
Upgrade clients from 3.6 to 3.7
3.5.2. Client code#
By default, the API will not longer auto retry and wait for stabilization or network to become available. This means, that you may get more network timeouts and cluster stabilization errors than before.
To get the old client behavior back, you need to call `qdb_option_set_stabilization_max_wait`
(or equivalent in your API) on every handle with a value equivalent to 6 minutes (360,000 ms).
This is a client-only change, the server configuration is not impacted and does not need to be modified.
3.5.3. Licenses#
The license format is unchanged.
3.5.4. Persistence#
Blobs and strings format has changed on disk. Only new data will be written in the new format.
A 3.7 node can load the data stored by a 3.6 node.
A 3.6 node cannot load the data stored by a 3.7 node.
3.5.5. Network#
A 3.6 client cannot connect to a 3.7 cluster.
A 3.7 client cannot connect to a 3.6 cluster.
3.6. Upgrading from 3.5 to 3.6#
3.6.1. Recommended procedure#
Backup your data
Shutdown all nodes in your cluster
Upgrade each node fom 3.5 to 3.6
Restart the cluster
Ensure each node loads up correctly and that the log displays no error
Upgrade clients from 3.5 to 3.6
3.6.2. Configuration#
- The following default values have changed
Client timeout has been increased from 1 minute to 5 minutes
Client stabilization wait interval has been increased from 5 minutes to 6 minutes
Client transaction retry period has been increased from 1 minute to 6 minutes
Server client timeout has been increased from 1 minute to 5 minutes
Server idle timeount has been increased from 10 minutes to 15 minutes
3.6.3. Licenses#
The license format is unchanged.
3.6.4. Persistence#
A 3.6 node can load the data stored by a 3.5 node.
A 3.5 node cannot load the data stored by a 3.6 node.
3.6.5. Network#
A 3.5 client cannot connect to a 3.6 cluster.
A 3.6 client cannot connect to a 3.5 cluster.