IBM Cloud Docs
Upgrading to a new Major Version

Upgrading to a new Major Version

When a major version of a database is at its end of life (EOL), it is a good idea to upgrade to a current major version.

Find the available versions of RabbitMQ on the IBM Cloud® Messages for RabbitMQ the catalog page, from the Cloud Databases CLI plug-in command ibmcloud cdb deployables-show, or through the Cloud Databases API /deployables endpoint.

Upgrade your new deployment by restoring a backup of your data into the new version. Restoring from a backup has a number of advantages:

  • The original deployment continues running and production work can be uninterrupted.
  • You can test the new database out of production and act on any application incompatibilities.
  • The entire process can be rerun at any point.
  • A fresh restoration reduces the likelihood that unneeded artifacts of the older version are carried over to the new deployment.

Alternatively, you can also use RabbitMQ Shovel to migrate to another version.

Upgrading in the UI

Upgrade to a new version when restoring a backup from the Backups tab of your Deployment Overview. Click Restore on a backup to bring up a dialog box where you can choose options for the new deployment. One of the configurable options is the database version, which is auto-populated with the versions available for you to upgrade to. Select a version and click Restore to start the provision and restore process.

Upgrading through the CLI

To upgrade and restore from backup through the CLI, use the ibmcloud resource service-instance-create command:

ibmcloud resource service-instance-create <service-name> <service-id> <service-plan-id> <region>

The parameters service-name, service-id, service-plan-id, and region are all required. You also supply the -p with the version and backup ID parameters in a JSON object. If you need to use a key protect key, resize the deployment, or allocate dedicated cores, you can do so with the optional parameters key_protect_key, members_disk_allocation_mb, members_memory_allocation_mb, or members_cpu_allocation_count, along with their respective values to the body of the request:

ibmcloud resource service-instance-create example-upgrade messages-for-rabbitmq standard us-south \
-p '{"backup_id": "crn:v1:bluemix:public:messages-for-rabbitmq:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6", "version":3.8}'

Upgrading through the API

Complete the necessary steps to use the resource controller API before you use it to upgrade from a backup.

Next, send the API a POST request. The parameters name, target, resource_group, and resource_plan_id are all required. You also supply the version and backup_id. To use a key protect key, resize the deployment, or allocate dedicated cores, configure the following optional parameters and their values: key_protect_key, members_disk_allocation_mb, members_memory_allocation_mb, or members_cpu_allocation_count.

curl -X POST \
  https://resource-controller.bluemix.net/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "bluemix-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "messages-for-rabbitmq-standard",
    "backup_id": "crn:v1:bluemix:public:messages-for-rabbitmq:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
    "version":3.9
  }'

Upgrade using RabbitMQ Shovel

You can use a shovel to move messages from a current cluster to a new cluster during a RabbitMQ version upgrade. For more information, see RabbitMQ Shovel.

Troubleshooting

If you encounter errors while importing definitions during an upgrade Messages for RabbitMQ, see Why can't I import definitions from Messages for RabbitMQ version 3.9 to version 3.11?.