Schema/Version compatibility

Live migration

BMaaS supports live migrating schemas. On startup, every component using the BMaaS will attempt to migrate the database up to the newest version of the schema it was built with.

Components are implemented to support a range of schemas, and operators should sequence upgrades in the following way:

  1. Make sure that all components are at the newest possible CL, but not so new that they ship a newer version of the schema than is currently running.
  2. Upgrade components in a rolling fashion to a CL version that ships the newest possible schema version which is still compatible with the previous CL versions of the components.
  3. Repeat from point 1 until the newest wanted CL version is running.

^ ID ^ Schema range ^ CL range ^ Notes ^ | 0 | < 1672749980 | >= 0 | Initial production schema. | | 1 | >= 1672768890 | >= 1565 | Exponential backoff support. |

For example, if the cluster is at version 1200, it should first be upgraded to < 1565 (to reach row 0), then to anything higher than 1565 (to reach row 1).

Offline migration

For simple deployments, an offline migration is easiest. To perform an offline migration:

  1. Turn down all BMaaS components that communicate with the BMDB.
  2. Upgrade all components to the newer version (either newest or otherwise wanted, but all components have to be at the same CL version).
  3. Turn up a single component of BMaaS torn down in 1., making sure the database is migrated.
  4. Turn up the rest of the components.

This allows migrating across many incompatible schema migrations, but requires downtime.