Upgrades¶
Upgrading a Tarantool database¶
If you created a database with an older Tarantool version and have now installed
a newer version, make the request box.schema.upgrade()
. This updates
Tarantool system spaces to match the currently installed version of Tarantool.
For example, here is what happens when you run box.schema.upgrade()
with a
database created in early 2015. only a small part of the output is shown.
tarantool> box.schema.upgrade()
alter index primary on _space set options to {"unique":true}, parts to [[0,"num"]]
alter space _schema set options to {}
create view _vindex...
grant read access to 'public' role for _vindex view
set schema version to 1.6.9
---
...
Upgrading a Tarantool instance¶
Tarantool is backward compatible between two adjacent versions. For example, you should have no or little trouble when upgrading from Tarantool 1.6 to 1.7, or from Tarantool 1.7 to 1.8. Meanwhile Tarantool 1.8 may have incompatible changes when migrating from Tarantool 1.6. to 1.8 directly.
This procedure is for upgrading a standalone Tarantool instance in production from 1.6.x to 1.7.x (or to 1.9.x, which is actually the renamed 1.7 series). Notice that this will always imply a downtime. To upgrade without downtime, you need several Tarantool servers running in a replication cluster (see below).
Tarantool 1.7 has an incompatible .snap and .xlog file format: 1.6 files are supported during upgrade, but you won’t be able to return to 1.6 after running under 1.7 for a while. It also renames a few configuration parameters, but old parameters are supported. The full list of breaking changes is available in release notes for Tarantool 1.7 / 1.9.
To upgrade from Tarantool 1.6 to 1.7 (or to 1.9.x, which is actually the renamed 1.7 series):
- Check with application developers whether application files need to be updated due to incompatible changes (see 1.7 / 1.9 release notes). If yes, back up the old application files.
- Stop the Tarantool server.
- Make a copy of all data (see an appropriate hot backup procedure in Backups) and the package from which the current (old) version was installed (for rollback purposes).
- Update the Tarantool server. See installation instructions at Tarantool download page.
- Update the Tarantool database. Make the request
box.schema.upgrade()
. This will create new system spaces, update data type names (e.g. num -> unsigned, str -> string) and options in Tarantool system spaces. - Update application files, if needed.
- Launch the updated Tarantool server using
tarantoolctl
orsystemctl
.
Upgrading Tarantool in a replication cluster¶
Tarantool 1.7 (as well as Tarantool 1.9) can work as a replica for Tarantool 1.6 and vice versa. Replicas perform capability negotiation on handshake, and new 1.7 replication features are not used with 1.6 replicas. This allows upgrading clustered configurations.
This procedure allows for a rolling upgrade without downtime and works for any cluster configuration: master-master or master-replica.
Upgrade Tarantool at all replicas (or at any master in a master-master cluster). See details in Upgrading a Tarantool instance.
Verify installation on the replicas:
- Start Tarantool.
- Attach to the master and start working as before.
The master runs the old Tarantool version, which is always compatible with the next major version.
Upgrade the master. The procedure is similar to upgrading a replica.
Verify master installation:
- Start Tarantool with replica configuration to catch up.
- Switch to master mode.
Upgrade the database on any master node in the cluster. Make the request
box.schema.upgrade()
. This updates Tarantool system spaces to match the currently installed version of Tarantool. Changes are propagated to other nodes via the regular replication mechanism.