Standard Database upgrade
Overviewโ
This page describes how to upgrade the Aerospike Database.
By upgrading your Aerospike Database cluster you will gain access to the latest features and bug fixes. The cluster upgrade process involves upgrading one server node at a time, which results in no downtime for the cluster.
Mixed versionsโ
Aerospike supports mixed-version clusters for rolling upgrades. However, Aerospike does not recommend long term use of clusters with nodes running different versions of the Aerospike database.
Refer to the Special Upgrade instructions page for important information relevant to specific versions.
Download the server package to the nodeโ
- Download the Aerospike Database server manually from the Download page.
- It is important to read the release notes of the version you are downloading.
- You can automate downloading versions of the server from the artifact repository. See the FAQ on downloads for details.
Base URL
https://download.aerospike.com/artifacts/aerospike-server-VERSION/SERVER-VERSION/
Download the server package and transfer it to the node. The name of the server package varies by version.
Linux distributions (distros) that use Red Hat packages must use the appropriate Red Hat Enterprise Linux compatible version. See Install on Red Hat Enterprise Linux.
Database 6.2 and laterโ
- Support for
ubuntu24.04 LTS
was added in Database 7.2. - Support for Debian 10 ARM64 was removed from Database 6.3.
Starting with Database 6.2 where support for ARM64 is introduced, the server package follows the following naming convention:
aerospike-server-EDITION_VERSION_tools-TOOLS-VERSION_DISTRO_ARCHITECTURE.tgz
edition: community
, enterprise
, federal
version: 6.2.0.0
distro: debian10
, debian11
, debian12
, ubuntu18.04
, ubuntu20.04
, ubuntu24.04
,el7
, el8
, el9
, amzn2023
architecture: x86_64
, aarch64
based on uname -m
Database 6.2 and earlierโ
In Database 6.2 and earlier, servers were intended to run only on Linux distros and the x86_64 architecture.
aerospike-server-EDITION-VERSION-DISTRO.tgz
edition: community
, enterprise
, federal
version: 6.1.0.3
distro: debian10
, debian11
, ubuntu18.04
, ubuntu20.04
, ubuntu24.04
, el7
, el8
See Database 6.1.
Stop the Aerospike serviceโ
It is a good practice to quiesce a node prior to shutting it down or removing it from a cluster. See the Quiesce Node page for details (Enterprise Edition).
To stop the Aerospike service
# On systemd Linux distros
sudo systemctl stop aerospike
# On System V Linux distros
sudo /etc/init.d/aerospike stop
If you have namespaces which are configured to be only in-memory with no persistence (storage-engine
memory),
it is required to wait for migrations to be completed before moving on to the next node to avoid data loss.
Refer to Monitoring Migrations.
Unpack the server packageโ
Uncompress the package to get the RPM or Debian packages of the server and tools.
You may need to delete the older version, if upgrading from Aerospike version
prior to 3.3.x.
To remove the packages look for the old versions of aerospike-VERSION-server
and aerospike-VERSION-tools
.
# For RRMs
sudo rpm -qa | grep aerospike
sudo rpm -e RPM_NAME
# For Debian packages
sudo dpkg -l | grep aerospike
sudo dpkg -r DPKG_NAME
Install the new packagesโ
Database 6.2 and laterโ
Debian formatโ
aerospike-server-EDITION_VERSION-1DISTRO_ARCHITECTURE.deb
aerospike-tools_VERSION-[commit]DISTRO_ARCHITECTURE.deb
edition: community
, enterprise
, federal
version: 6.2.0.0
distro: debian10
, debian11
, ubuntu18.04
, ubuntu20.04
architecture: amd64
, arm64
based on dpkg-architecture -qDEB_HOST_ARCH
sudo dpkg -i aerospike-server-enterprise_6.2.0.0-1ubuntu20.04_arm64.deb
sudo dpkg -i aerospike-tools_8.1.0-ubuntu20.04_arm64.deb
RPM formatโ
aerospike-server-VERSION-1.RHEL.ARCHITECTURE.rpm
aerospike-tools-VERSION-1.RHEL.ARCHITECTURE.rpm
edition: community
, enterprise
, federal
version: 6.2.0.0
RHEL: el7
, el8
architecture: x86_64
, aarch64
sudo rpm -Uvh aerospike-server-enterprise-6.2.0.0-1.el7.aarch64.rpm
sudo rpm -Uvh aerospike-tools-7.4.0-1.el7.aarch64.rpm
Database 6.2 and earlierโ
Debian formatโ
aerospike-server-VERSION.DISTRO.x86_64.deb
aerospike-tools-VERSION.DISTRO.x86_64.deb
edition: community
, enterprise
, federal
version: 6.0.0.7
, 6.1.0.3
, and so on
distro: debian10
, debian11
, ubuntu18.04
, ubuntu20.04
For example
sudo dpkg -i aerospike-server-enterprise-6.0.0.7.ubuntu18.04.x86_64.deb
sudo dpkg -i aerospike-tools-7.3.1.ubuntu18.04.x86_64.deb
RPM formatโ
aerospike-server-VERSION-1.RHEL.x86_64.rpm
aerospike-tools-VERSION-1.RHEL.x86_64.rpm
edition: community
, enterprise
, federal
version: 6.1.0.3
RHEL: el7
, el8
sudo rpm -Uvh aerospike-server-enterprise-6.1.0.3-1.el8.x86_64.rpm
sudo rpm -Uvh aerospike-tools-7.3.1-1.el8.x86_64.rpm
Start the Aerospike serviceโ
Restart the server, and wait until the server confirms that the node is ready.
# On systemd Linux distros
sudo systemctl start aerospike
# On System V Linux distros
sudo /etc/init.d/aerospike start
Stopping and starting the Aerospike service makes the node leave the cluster for a short time, which triggers data rebalancing (migrations).
The migrate-fill-delay
parameter to controls these migrations. Refer to the Delay Migrations page for further details.
Monitor the cluster stateโ
Prior to upgrading another node, verify that the node has re-joined the cluster, by performing these steps:
- Cluster key is uniform across the cluster, see
cluster_key
- Cluster is of the expected size, see
cluster_size
This can be checked through asadm, asinfo or by tailing the logs.
In some situations, it may require waiting for migrations to complete prior to moving on and stopping the next node.
As of version 4.3, the cluster-stable
info command can be used to easily determine whether a cluster is stable.
For versions not supporting the cluster-stable
info command, the following conditions would guarantee that migrations
have completed following a reclustering event (across all nodes in a cluster):
migrate_allowed
istrue
migrate_partitions_remaining
is0
In order to programmatically check whether the cluster is at a stable state and migrations have finished, the following should be observed:
- Wait until
cluster_key
is uniform, thecluster_size
is of expected size andmigrate_allowed
is set totrue
- Wait for
migrate_partitions_remaining
to be0
- Check the
cluster_key
is still the same as it was in step 1 and that thecluster_size
did not change. If these are different, loop over to step 1 and check again.
Situations requiring a wait for migrations between nodes to complete include the following:
- namespaces which are configured to be in-memory only (no persistence,
storage-engine memory
) - specific version upgrades requiring persisted data to be deleted (for example version 4.2)
- some use cases for clusters running the older cluster protocol (prior to version 3.13)
On completing the upgrade across all nodes in the cluster, you can confirm from the output of asadm -e "info network"
if all the nodes have successfully upgraded to the correct version and that the cluster size is correct. You can look at asadm -e "info node"
to check other statistics.
Admin info network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2020-12-16 21:45:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Node| Node ID| IP| Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client| Uptime
| | | | |Size| Key|Integrity| Principal| Conns|
10.0.0.1:3000| BB9010016AE4202| 10.0.0.1:3000|C-5.3.0.1| 0.000 | 5|92DCF600367B|True |BB9050016AE4202| 2|00:07:48
10.0.0.2:3000| BB9020016AE4202| 10.0.0.2:3000|C-5.3.0.1| 0.000 | 5|92DCF600367B|True |BB9050016AE4202| 2|00:07:47
10.0.0.3:3000|*BB9030016AE4202| 10.0.0.3:3000|C-5.3.0.1| 0.000 | 5|92DCF600367B|True |BB9050016AE4202| 2|00:07:46
Number of rows: 5
service ready: soon there will be cake!
will be logged after a node is available. The logs can be tailed for "cake" to check for this line:
# On systemd Linux distros
journalctl -u aerospike -a -o cat -f | grep "cake"
# On System V Linux distros
sudo tail -f /var/log/aerospike/aerospike.log | grep "cake"