Upgrade a HarperDB Instance
This document describes best practices for upgrading self-hosted HarperDB instances. HarperDB can be upgraded using a combination of npm and built-in HarperDB upgrade scripts. Whenever upgrading your HarperDB installation it is recommended you make a backup of your data first. Note: This document applies to self-hosted HarperDB instances only. All HarperDB Cloud instances will be upgraded by the HarperDB Cloud team.
Upgrading
Upgrading HarperDB is a two-step process. First the latest version of HarperDB must be downloaded from npm, then the HarperDB upgrade scripts will be utilized to ensure the newest features are available on the system.
Install the latest version of HarperDB using
npm install -g harperdb
.Note
-g
should only be used if you installed HarperDB globally (which is recommended).Run
harperdb
to initiate the upgrade process.HarperDB will then prompt you for all appropriate inputs and then run the upgrade directives.
Node Version Manager (nvm)
Node Version Manager (nvm) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https://nvm.sh/.
HarperDB supports Node.js versions 14.0.0 and higher, however, please check our NPM page for our recommended Node.js version. To install a different version of Node.js with nvm, run the command:
To switch to a version of Node run:
To see the current running version of Node run:
With a handful of different versions of Node.js installed, run nvm with the ls
argument to list out all installed versions:
When upgrading HarperDB, we recommend also upgrading your Node version. Here we assume you're running on an older version of Node; the execution may look like this:
Switch to the older version of Node that HarperDB is running on (if it is not the current version):
Make sure HarperDB is not running:
Uninstall HarperDB. Note, this step is not required, but will clean up old artifacts of HarperDB. We recommend removing all other HarperDB installations to ensure the most recent version is always running.
Switch to the newer version of Node:
Install HarperDB globally
Run the upgrade script
Start HarperDB
Upgrading Nats to Plexus 4.4
To upgrade from NATS clustering to Plexus replication, follow these manual steps. They are designed for a fully replicating cluster to ensure minimal disruption during the upgrade process.
The core of this upgrade is the bridge node. This node will run both NATS and Plexus simultaneously, ensuring that transactions are relayed between the two systems during the transition. The bridge node is crucial in preventing any replication downtime, as it will handle transactions from NATS nodes to Plexus nodes and vice versa.
Enabling Plexus
To enable Plexus on a node that is already running NATS, you will need to update two values in the harperdb-config.yaml
file:
replication.url
– This should be set to the URL of the current HarperDB instance.
replication.hostname
– Since we are upgrading from NATS, this value should match the clustering.nodeName
of the current instance.
Upgrade Steps
Set up the bridge node:
Choose one node to be the bridge node.
On this node, follow the "Enabling Plexus" steps from the previous section, but do not disable NATS clustering on this instance.
Stop the instance and perform the upgrade.
Start the instance. This node should now be running both Plexus and NATS.
Upgrade a node:
Choose a node that needs upgrading and enable Plexus by following the "Enable Plexus" steps.
Disable NATS by setting
clustering.enabled
tofalse
.Stop the instance and upgrade it.
Start the instance.
Call
add_node
on the upgraded instance. In this call, omitsubscriptions
so that a fully replicating cluster is built. The target node for this call should be the bridge node. Note: depending on your setup, you may need to expand thisadd_node
call to include authorization and/or tls information.
Repeat Step 2 on all remaining nodes that need to be upgraded.
Disable NATS on the bridge node by setting
clustering.enabled
tofalse
and restart the instance.
Your cluster upgrade should now be complete, with no NATS processes running on any of the nodes.
Last updated