---
title: "Fanavaozana tsy misy fijanonana"
description: "Manavao Quire fandraisina an-tsokajy tsy misy fijanonana."
image: "https://docs.quirelms.com/og.png"
---

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

# Fanavaozana tsy misy fijanonana

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

Ny fehezanteny dia ao amin'ny `docs/architecture/23-ops.md` singa 7 ary `docs/architecture/07-data.md` singa 4.1. Izao no fomba fiasa.

## Ny fanapatoana mahatonga azy ho azo antoka <!--quire:the-guarantee-that-makes-it-safe-->

**Miasa tsara amin'ny schema R sy schema R maina iray ny fandefasana R.** Sarain'ny fampitomboana, fandaloana ary fanaprahana isaky ny fanovana schema:

1. **Fampitomboana**: manampy gerbozy, takelaka na index vaovao. Tsy manadino azy ny kaody taloha.
2. **Fandaloana**, amin'ny farany fandefasana iray: manoratra endrika roa ny kaody vaovao ary mamaky ny vaovao; asa azo atomboyina dia manampy toerana taloha.
3. **Fanaprahana**: esorina ny endrika taloha, ao amin'ny fandefasana manaraka, iray ihany.

Ka amin'ny fotoana rehetra an'ny fanavaozana mihetsika, afaka mizara data-by iray ny endrika taloha sy vaovao. Tsy misy fiovana miverina: ny fiovana nesorana gerbozy iray ora lasa dia tsy afaka mamerina ny toerana nosoratra tamin'io ora io.

Mijery ny fanapatoana isaky ny fandefasana ny asan'ny CI `schema-compat` amin'ny alàlan'ny fandraisana ny fanadinana an'ny fandefasana taloha amin'ny schema vaovao.

## Alohan'ny hanombohana <!--quire:before-you-start-->

1. Mamaky ny toro-hevitry ny fandefasana. Ny fandefasana mila fotoan-panapahana dia milaza izany, misy ny fetra; iray ihany farany fandefasana.
2. Alefa ny fandinihan'ny famerenana, na manamarina fa nandeha tsara amin'io fandefasana io izy ([backup-restore.md](/mg/ops/backup-restore/)). Ny fandinihana diso dia manakana ny fanavaozana.
3. Manao backup fototra: `docker compose -f docker/compose.yaml --profile backup run --rm backup`.

## Docker Compose, mpandray anjara iray <!--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
```

Lalina ny filaharana:

1. **Fiovana voalohany**, rehefa miasa ny fandefasana taloha. Tsy hita aminy ny fiovana fampitomboana.
2. **Ny sehatra ve-dalana avy eo.** Amin'ny SIGTERM dia manova `/readyz` ho `draining` ny asa ve-dalana tsirairay, manavao ny fangatahana misokatra ao anatin'ny 30 sekondra, manokatra ny rindrina amin'ny toro-hevitra fijeron-kosoka, ary mivoaka. 40 sekondra ny `stop_grace_period` ka tsy hanapaka Compose ny fijanonana toa miasa tsara.
3. **Ny mpandray asa farany**, ka hanao ny endrika vaovao ny zava-mitranga voalohany alohan'ny fijeren'ny mpangataka vaovao azy. Miha-jiny haingana ny mpandray asa ary mahaka 120 sekondra; ny asa tsy afaka vita dia atehirizina hafa, izay tsy manimba satria tsirairay ny asa. Alefan'ny mpandrinjaka ny fahefany amin'ny fijerena manaraka.

Amin'ny mpandray anjara iray, dia manolo container tsirairay arakaty ny Compose, ka misy fijanonana fohy isaky ny serivisy. Tsy misy fijreonana tanteraka, alefa ny sehatra ve-dalana ho container roa eo aorian'ny proxy manokanao (rafitra manampy serivisy ve-dalana faharoa tsy misy akanjo), ary amoronao iray iray, miandry ny fahasalamana tsirairay alohan'ny anaraka.

## Mpandray anjara maro na mpitondra tetikasa <!--quire:several-hosts-or-an-orchestrator-->

Ampiasao ny filaharana mitovy: fiovana iray avy amin'ny asa iray, avy eo alefa ny sehatra ve-dalana amin'ny maxSurge iray sy maxUnavailable zero, avy eo ny mpandray asa. Orientaho amin'`/readyz` ny fijerena fahazotoana ary amin'`/healthz` ny fijerena fahombiazana.

Amin'ny data-by mpanjifa manokana, ny dingana `migrate` dia manao roa: fiovana ny data-by fifehezana voalohany, avy eo data-by rehetra voasoratra ao amin'ny `ops.tenant_database`, iray iray, isaky ny iray amin'ny veriny manokana. Ny diso ao amin'ny data-by mpanjifa iray tsy manakana ny sisa. Rehefa vita ny data-by rehetra, dia mampitaho ny taki-dalana fiovana ary mivoaka amin'ny kaody tsy 0 raha tsy ampy ny fiovana natao amin'ny data-by rehetra toy ny amin'ny data-by fifehezana, manambara ny tsy mbola na eo ambony. Ny fehezanteny mitovy no mametraka ny takelakin'ny filaharana ao amin'ny data-by tsirairay, satria ny mpandray asa dia miasa amin'ny asan'ny mpanjifa voafaritra eo amin'ny toerana nosoratany.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```
Ny fifindra-monina mahazatra sy ny fanamboarana voalohany dia mametraka ihany koa ny antontan-taratasy ara-dalàna anglisy kanônikan'ny mpandraharaha Quire ao amin'ny `ops.platform_policy_version`. Ny fametrahana dia idempotent: ny lahatsoratra anglisy tsy hita sy marina ireo lahatsoratra vonjimaika noforonin'ny fifindra-monina ihany no soloina. Voatahiry ny voa ary ampidirina ny dika navoaka vaovao; voatahiry ny fanondroana fanekena ara-tantara sy ny lahatsoratra. Ny dika marina rehetra nosoratan'ny mpandraharaha, anisan'izany ny volavola, dia voatahiry ary tsy maintsy tantanana amin'ny alalan'ny console Politika eo amin'ny lampihazo. Ny antontan-taratasy, ny dika ary ny fanekena amin'ny politikan'ny mpanofa dia tsy ovaina mihitsy amin'ity fifindrana ity. Ity dia famoahana lahatsoratry ny mpandraharaha, fa tsy fanamarinana ara-dalàna na fanatanterahana ho azy ny fampanantenany.


Hitahin'ny anarana nosoratany ny data-by manokana tsirairay. Data-by nosoratra hoe `env:QUIRE_DB_NORTHWIND_URL` mila:

| Variable | Amprasaina amin'ny |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Ny andraikin'ny fampiharana, ho an'ny sehatra ve-dalana sy ny mpandray asa |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Ny andraikin'ny mpanova, ho an'ny fehezanteny io sy ho an'ny fandehanana |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Azo safidina: mamerina ny fototra (andraikitra, schema, solosaina) alohan'ny fiovana |

Tsy alefa mihitsy fa tetibola no atao amin'ny data-by voasoratra tsy misy fifandraisana `_MIGRATOR`. Afaka alefa ny sehatra ve-dalana rehefa vita ny data-by fifehezana. Mampandrenesa raha mivoaka hora iray ny data-by mpanjifa; raha andro iray, dia mamela fampandrenesana loza.

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

Avy amin'ny fiovana 0264 dia mampiasa index HNSW pgvector ny loharanon'ny fampianarana raha manana io extension io ny serivera; voamorona aminy ny serivisy `postgres` an'ny Compose (`docker/postgres.Dockerfile`). Mamorona ny extension amin'ny alàlan'ny fototran'ny superuser ny `migrate` voalohany aorian'ny fanovana sary, ary avy eo manampy gerbozy veketa naorina ny 0264 ary manamboatra ny index. Ny fanampiana gerbozy dia manoratra indray `app.ai_chunk` amin'ny fotoana iray amin'ny adiny voafaritra, ka miandry izany ny fangatahana fampianarana; tsy misy hafa mamintina io takelaka io.

Ao amin'ny serivera tsy misy pgvector, dia manoratra fanamarihana ny 0264 ary tsy manova na inona na inona, ary marina mihitsy ny fikarohana. Amin'ny pgvector taloha kokoa no 0.8 dia amoronina ny gerbozy sy index fa marina mihitsy ny fikarohana mandraaka fanavaozana ny extension (`alter extension vector update`), satria mila ny fijerena mihintsana an'ny 0.8 ny fanadihadiana HNSW misy sivana. Hanalefa azy eo amin'ny serivera tsy misy azy avy eo, apetraho ny extension, alefa indray ny fototra (na `create extension vector` amin'ny alàlan'ny superuser), avy eo amin'ny alàlan'ny `quire_migrator`:

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

Idempotenty izy ary manome `enabled` na `unavailable`. Alefa azy koa amin'ny data-by mpanjifa manokana tsirairay.

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

Azony ampiasaina foana ny **famerenana kaody**: metrahana `QUIRE_RELEASE` amin'ny tag taloha ary alefa `up -d` indray. Miasa izany satria mifanaraka ny schema eo amin'ny felana roa ao anatin'ny fandefasana iray.

Tsy omena ny **famerenana schema**. Ny tsy azo afoana, ary ny fomba hanadihahana azy:

| Tsy azo averina | Fanadihahana |
| --- | --- |
| Ny fiovana fanaprahana nesorana gerbozy | Famerenana amin'ny fotoana voafaritra alohan'ny fanesana mankany amin'ny data-by vaovao, avaka, apetraho |
| Ny fanovana data eo an-toerana | Ny mitovy, avy eo ampiasao ny fanoratana natao avy eo |
| Webhook sy zava-mitranga nandeha | Zava-mitranga mamerina, tsy fanalana mihitsy |
| Mailaka nandeha | Olona iray no manoratra ny takiana |
| Ny rindrin'ny hash an'ny fitsarana | Tsy manoratra indray mihitsy; ampiorino singa fanitsakitsahana |

Io no antony alefan'ny fiovana fanaprahana iray ihany: misy fetra madio ny famerenana avy eo.

## Fanekena ny fanavaozana <!--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/mg/ops/upgrade/index.mdx
