blob: 0dacf0b3d848221d3487a484ca50f99de6cc0eb4 [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
21^ ID ^ Schema range ^ CL range ^ Notes ^
22| 0 | < 1672749980 | >= 0 | Initial production schema. |
23| 1 | >= 1672768890 | >= 1565 | Exponential backoff support. |
24
25For example, if the cluster is at version 1200, it should first be upgraded to
26< 1565 (to reach row 0), then to anything higher than 1565 (to reach row 1).
27
28Offline migration
29---
30
31For simple deployments, an offline migration is easiest. To perform an offline migration:
32
331. Turn down all BMaaS components that communicate with the BMDB.
342. Upgrade all components to the newer version (either newest or otherwise
35 wanted, but all components have to be at the same CL version).
363. Turn up a single component of BMaaS torn down in 1., making sure the database is migrated.
374. Turn up the rest of the components.
38
39This allows migrating across many incompatible schema migrations, but requires downtime.