---
title: "Promovere sine intermissione"
description: "Promove Quire apud se hospitatum sine intermissione servitii."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/la/llms.txt
> Use this file to discover all available pages before exploring further.

# Promovere sine intermissione

<span id="upgrading-without-downtime"></span>

Regulae in `docs/architecture/23-ops.md` sectio 7 et
`docs/architecture/07-data.md` sectio 4.1 sunt. Haec est procedura.

## Sponsio quae id tutum facit <!--quire:the-guarantee-that-makes-it-safe-->

**Editio R recte contra schematem R et schematem R minus unum currit.** Quaeque
mutatio schematis in expand, transitionem et contractum dividitur:

1. **Expand**: columnam, tabulam aut indicem novum adde. Codex vetus id neglegit.
2. **Transition**, per saltem unam editionem: codex novus utrasque formas scribit
   et novam legit; opus resumibile veteres ordines implet.
3. **Contract**: formam veterem deice, in editione posteriore, solam.

Ita in omni tempore promotionis struentes veteres et novi processus una bases
datae communicare possunt. Nullae sunt migrationes descendentes: migratio quae
columnam hora ante deiecit ordines ea hora scriptos reddere non potest.

Munus CI `schema-compat` sponsionem in omni editione inspicit cum testa
editionis prioris contra novum schematem currit.

## Antequam incipias <!--quire:before-you-start-->

1. Notas editionis lege. Quae editio fenestram maintenance desiderat id dicit,
   cum aestimatione; saltem una per editionem.
2. Exercitium restitutionis exequere, aut confirma id pro hac editione viride
   cucurrisse ([backup-restore.md](/la/ops/backup-restore/)). Exercitium fractum
   promotionem prohibet.
3. Custodiam base fac: `docker compose -f docker/compose.yaml --profile backup
   run --rm backup`.

## Docker Compose, unus hospes <!--quire:docker-compose-one-host-->

```sh
export QUIRE_RELEASE=2026.10.0            # or set it in docker/.env
docker compose -f docker/compose.yaml pull   # or build
docker compose -f docker/compose.yaml run --rm migrate
docker compose -f docker/compose.yaml up -d --no-deps web content collab
docker compose -f docker/compose.yaml up -d --no-deps worker scheduler
```

Ordo consultus est:

1. **Migrare primum**, dum vetus editio trafficit servit. Migrationes expand ei
   invisibiles sunt.
2. **Stratum textorium deinde.** In SIGTERM quisque processus web `/readyz` in
   `draining` vertit, petitiones in volatu intra 30 secundas absolvit, fluxus
   cum indice reconnectus claudit et exit. `stop_grace_period` 40 secundae sunt
   ita ut Compose numquam sanam drainage abscindat.
3. **Operarii postremo**, ita ut forma eventus novissima producatur antequam
   novissimus consumer eam exspectet. Operarii statim desinunt petere et 120
   secundas accipiunt; opus quod absolvi non potest alibi rursus petetur, quod
   tutum est quia quodque opus idempotens est. Dispositio ducatum in proximo
   suo ictu tradit.

In uno hospite Compose singulas containers vice sua mutat, ideo brevis mora per
servitium est. Ut nulla mora omnino sit, stratum textorium ut duos containers
sub tuo proprio proxeno curra (filetulum superpositionis quod secundum servitium
web addit sine portu publicato), et eos refice unus post alterum, singulum sanum
renuntiare expectans ante proximum.

## Plures hospites aut orchestrator <!--quire:several-hosts-or-an-orchestrator-->

Eundum ordinem utere: semel ex uno opere migra, deinde stratum textorium cum
surge one et unavailable zero volue, tum operarios. Censores aptitudinis ad
`/readyz` et vitae ad `/healthz` dirige.

Cum bases datae inquilino dedicatae, gradus `migrate` utrumque facit: primum
bases datae imperii migrat, deinde quamque basim in `ops.tenant_database`
enumeratam, una per tempus, quaeque sub proprio suo custode. Fragmentum in unis
basibus inquilini reliquas non compescit. Cum omnes absolutae sunt liberos
migrationum comparat et exit non-zero nisi quaeque bases easdem migrationes
applicuit quas bases imperii, nominans quamque quae retro aut ante agatur.
Eadem mandata tabulas ordinis in quaque basi instituit, quia operarius officia
inquilini fixi ibi consumit ubi scripta sunt.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```
Migratio ordinaria et prima constitutio etiam canonica Anglica documenta iuridica operatoris Quire in `ops.platform_policy_version` installant. Installator idempotens est: sola corpora Anglica absentia et exacte corpora locum tenentia a migratione sata substituuntur. Semina in archivo reponuntur et nova versio edita inseritur; historicae acceptionis notae et corpora servantur. Quaelibet vera versio ab operatore scripta, etiam exemplum rudis, servatur et per consilium Rationum suggestus administrari debet. Documenta, versiones et consensus rationum conductoris hac transitione numquam mutantur. Haec est editio textus operatoris, non certificatio iuridica nec automatica promissorum eius impletio.


Quaebaque bases dedicata per nomen sub quo registrata est attingitur. Bades
sub `env:QUIRE_DB_NORTHWIND_URL` registrata desiderat:

| Variabilis | Quo adhibeatur |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Rola applicationis, pro strato textorio et operario |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Rola migratoris, pro hoc mandato et pro translatibus |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Optionaliter: bootstrap (rolas, schemata, adiuvantes) iterum applicat ante migrationem |

Bades registrata sine connectione `_MIGRATOR` ut fragmentum renuntiatur, numquam
omittitur. Stratum textorium volare potest simul ac bases imperii absoluta est.
Bades inquilini una hora retro agens monet; uno die alarmem facit.

## pgvector <!--quire:pgvector-->

A migratione 0264 corpus fundamenti indicem pgvector HNSW utitur ubi servitor
extensionem habet; servitium `postgres` Compose cum ea aedificatur
(`docker/postgres.Dockerfile`). Primum `migrate` post mutationem imaginum
extensionem per bootstrap superuseri creat, et 0264 deinde columnam vectoriam
generatam addit et indicem aedificat. Columna addita `app.ai_chunk` semel sub
custode exclusivo rescribit, ideo petitiones fundamenti id expectant; nihil aliud
illam tactam tabulat.

In servitore sine pgvector, 0264 nuntium scribit nihilque mutat, et requisitio
manet exacta. Cum pgvector veteri quam 0.8 columna et index aedificantur sed
requisitio manet exacta donec extensio promoveatur (`alter extension vector
update`), quia scan HNSW cum filtro 0.8 iterationes desiderat. Ut id postea in
servitore sine eo actives, extensionem institue, bootstrap iterum exequere (aut
`create extension vector` ut superusor), deinde ut `quire_migrator`:

```sql
set maintenance_work_mem = '1GB';  -- the HNSW build is much faster in memory
select ops.ai_chunk_enable_vector_index();
```

Idempotens est et `enabled` aut `unavailable` reddit. Id in quaque basi inquilino
dedicata quoque exequere.

## Regredi <!--quire:rolling-back-->

Regredi in **codicem** semper paratum est: `QUIRE_RELEASE` in notam priorem pone
et `up -d` rursus. Id valet quia schematem utraque via intra editionem
compatibile est.

Regredi in **schematem** non offertur. Quod resolvi non potest, et quomodo ex eo
recuperetur:

| Non reversibile | Recuperatio |
| --- | --- |
| Migratio contractus quae columnam deiecit | Restitutio in tempus ante deiectionem in bases datae novas, extrahere, coniungere |
| Mutatio datae in loco | Idem, deinde scripturas postea conciliare |
| Retia textoria et eventus missa | Eventus compensantes, numquam deletio |
| Epistulae missae | Homo scriptum sequens scribit |
| Catena hausti custodiae | Numquam rescribitur; adnotationem emendationis adiunge |

Idcirco migratio contractus sola vehitur: restitutio tum terminum mundum habet.

## Promotionem inspicere <!--quire:checking-the-upgrade-->

```sh
docker compose -f docker/compose.yaml ps           # every service healthy
curl -fsS http://localhost:8080/readyz             # ready, and what is configured
docker compose -f docker/compose.yaml logs migrate # the migrations applied
```

Source: https://docs.quirelms.com/la/ops/upgrade/index.mdx
