blob: a1326f67bf0c0144e04743f89db6340b21acbbbc [file] [log] [blame] [view]
Serge Bazanski3ea40da2023-04-19 14:32:37 +02001Schema/Version compatibility
2===
3
4Live migration
5---
6
7BMaaS supports live migrating schemas. On startup, every component using the BMaaS
8will attempt to migrate the database up to the newest version of the schema it
9was built with.
10
11Components are implemented to support a range of schemas, and operators should
12sequence upgrades in the following way:
13
141. Make sure that all components are at the newest possible CL, but not so new
15 that they ship a newer version of the schema than is currently running.
162. Upgrade components in a rolling fashion to a CL version that ships the newest
17 possible schema version which is still compatible with the previous CL
18 versions of the components.
193. Repeat from point 1 until the newest wanted CL version is running.
20
Tim Windelschmidtf9e3a652023-06-06 17:39:52 +020021| ID | Schema range | CL range | Notes |
22|----|---------------|----------|------------------------------|
23| 0 | < 1672749980 | >= 0 | Initial production schema. |
24| 1 | >= 1672768890 | >= 1565 | Exponential backoff support. |
Serge Bazanski3ea40da2023-04-19 14:32:37 +020025
26For example, if the cluster is at version 1200, it should first be upgraded to
27< 1565 (to reach row 0), then to anything higher than 1565 (to reach row 1).
28
29Offline migration
30---
31
32For simple deployments, an offline migration is easiest. To perform an offline migration:
33
341. Turn down all BMaaS components that communicate with the BMDB.
352. Upgrade all components to the newer version (either newest or otherwise
36 wanted, but all components have to be at the same CL version).
373. Turn up a single component of BMaaS torn down in 1., making sure the database is migrated.
384. Turn up the rest of the components.
39
40This allows migrating across many incompatible schema migrations, but requires downtime.