---
title: "Uasghrádú gan aga neamhfhónaimh"
description: "Uasghrádaigh Quire féinoibrithe gan aga neamhfhónaimh."
image: "https://docs.quirelms.com/og.png"
---

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

# Uasghrádú gan aga neamhfhónaimh

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

Tá na rialacha in alt 7 de `docs/architecture/23-ops.md` agus in alt 4.1 de `docs/architecture/07-data.md`. Seo an nós imeachta.

## An ráthaíocht a fhágann sábháilte é <!--quire:the-guarantee-that-makes-it-safe-->

**Ritheann Eisiúint R mar is ceart le scéimre R agus le scéimre R lúide a haon.** Roinntear gach athrú scéimre ina leathnú, aistriú agus crapadh:

1. **Leathnú**: cuir an colún, tábla nó innéacs nua leis. Déanann seanchód neamhaird de.
2. **Aistriú**, ar feadh eisiúint amháin ar a laghad: scríobhann cód nua an dá chruth agus léann sé an ceann nua; líonann jab in-athnuaite na seanraitheanna siar.
3. **Crapadh**: bain an seanchruth i leagan níos déanaí, leis féin.

Mar sin, ag gach tráth d'uasghrádú céimneach, is féidir le próisis shean agus nua bunachar sonraí amháin a roinnt. Níl aistrithe íslithe ann: ní féidir le haistriú a bhain colún uair an chloig ó shin na rónna a scríobhadh san uair sin a thabhairt ar ais.

Seiceálann jab CI `schema-compat` an ráthaíocht i ngach eisiúint trí thástálacha na heisiúna roimhe a rith in aghaidh na scéimre nua.

## Sula dtosaíonn tú <!--quire:before-you-start-->

1. Léigh nótaí na heisiúna. Luaitear fuinneog chothabhála riachtanach inti, agus meastachán uirthi; ní bhíonn níos mó ná ceann amháin in aghaidh eisiúna.
2. Rith cleachtadh athchóirithe, nó deimhnigh gur chríochnaigh sé go rathúil don eisiúint seo ([backup-restore.md](/ga/ops/backup-restore/)). Cuireann cleachtadh ar theip air bac ar an uasghrádú.
3. Déan cúltaca bunúsach: `docker compose -f docker/compose.yaml --profile backup run --rm backup`.

## Docker Compose, óstach amháin <!--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
```

Tá an t-ord d'aon ghnó:

1. **Déan an t-aistriú ar dtús**, agus an sean-eisiúint ag freastal ar thrácht. Ní fheiceann sí aistrithe leathnaithe.
2. **An tsraith ghréasáin ina diaidh.** Ar SIGTERM, athraíonn gach próiseas gréasáin `/readyz` go `draining`, críochnaíonn sé iarratais atá ar siúl laistigh de 30 soicind, dúnann sé sruthanna le leid athcheangail, agus scoireann sé. Is é 40 soicind `stop_grace_period`, ionas nach ngearrann Compose draein shláintiúil riamh.
3. **Na próiseálaithe ar deireadh**, ionas go gcruthófar cruth an imeachta is nua sula mbíonn an tomhaltóir is nua ag súil leis. Stopann próiseálaithe d'iarratais nua láithreach agus tugtar 120 soicind dóibh; faightear jab nach féidir leis críochnú arís in áit eile, rud atá sábháilte mar tá gach jab saor ó dhúbailt. Tugann an sceidealóir an cheannaireacht ar aghaidh ar an gcéad tic eile.

Ar óstach amháin, ionadaíonn Compose gach coimeádán ar a sheal, mar sin bíonn bearna ghairid in aghaidh na seirbhíse. Chun gan aon bhearna a bheith ann, rith dhá choimeádán den tsraith ghréasáin taobh thiar de do sheachfhreastalaí féin (comhad sáraíochta a chuireann an dara seirbhís web leis gan calafort foilsithe), agus athchruthaigh ceann ar cheann iad; fan go dtuairisceoidh gach ceann sláinte sula dtéann tú ar aghaidh go dtí an chéad cheann eile.

## Ilóstach nó ceolfhoirneoir <!--quire:several-hosts-or-an-orchestrator-->

Úsáid an t-ord céanna: aistrigh uair amháin ó jab amháin, rollaigh an tsraith ghréasáin le borradh amháin agus gan aon cheann ar fáil, ansin na próiseálaithe. Dírigh tóireadóirí ullmhachta ar `/readyz` agus tóireadóirí beogachta ar `/healthz`.

Le bunachair shonraí tionónta tiomnaithe, déanann céim `migrate` an dá rud: aistríonn sí an bunachar rialaithe ar dtús, ansin gach bunachar atá liostaithe in `ops.tenant_database`, ceann ar cheann faoina ghlas féin. Ní chuireann teip i mbunachar tionónta amháin stop leis na cinn eile. Nuair a chríochnaítear iad ar fad, déanann sí comparáid idir mórleabhair na n-aistrithe agus filleann sí cód neamh-nialasach mura bhfuil na haistrithe céanna go díreach curtha i bhfeidhm i ngach bunachar agus atá sa bhunachar rialaithe; ainmníonn sí gach ceann atá chun deiridh nó chun cinn. Suiteálann an t-ordú céanna táblaí na scuaine i ngach bunachar freisin, mar ídíonn an próiseálaí jabanna tionónta phionnáilte sa bhunachar inar scríobhadh iad.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```

Sroichtear gach bunachar tiomnaithe faoin ainm faoina bhfuil sé cláraithe. Teastaíonn na rudaí seo a leanas ó bhunachar atá cláraithe mar `env:QUIRE_DB_NORTHWIND_URL`:

| Athróg | Úsáid |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Ról an fheidhmchláir, don tsraith ghréasáin agus don phróiseálaí |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Ról an aistritheora, don ordú seo agus d'aistrithe |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Roghnach: athchuireann an tionscnamh róil, scéimrí agus cúntóirí i bhfeidhm roimh an aistriú |

Tuairiscítear gur teip é bunachar cláraithe gan ceangal `_MIGRATOR`; ní scipeáiltear é riamh. Is féidir an tsraith ghréasáin a rolladh nuair a bheidh an bunachar rialaithe críochnaithe. Tugtar rabhadh má bhíonn bunachar tionónta uair an chloig ar gcúl; tar éis lae seoltar fógra práinneach.

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

Ó aistriú 0264 ar aghaidh, úsáideann corpas bunúsaithe innéacs HNSW pgvector nuair atá an breiseán ag an bhfreastalaí; tógtar seirbhís Compose `postgres` leis (`docker/postgres.Dockerfile`). Cruthaíonn an chéad `migrate` tar éis íomhánna a athrú an breiseán tríd an tionscnamh sárúsáideora, agus cuireann 0264 colún veicteora ginte leis agus tógann sé an t-innéacs. Athscríobhann cur leis an gcolún `app.ai_chunk` uair amháin faoi ghlas eisiach, mar sin fanann iarratais bhunúsaithe go dtí go mbeidh sé déanta; ní dhéanann aon rud eile difear don tábla sin.

Ar fhreastalaí gan pgvector, logálann 0264 fógra agus ní athraíonn sé tada; fanann aisghabháil beacht. Le pgvector níos sine ná 0.8, tógtar an colún agus an t-innéacs ach fanann aisghabháil beacht go dtí go n-uasghrádaítear an breiseán (`alter extension vector update`), mar go dteastaíonn scananna atriallacha le haghaidh scananna scagtha HNSW agus níor tháinig siad go dtí 0.8. Chun é a chumasú níos déanaí ar fhreastalaí gan é, suiteáil an breiseán, rith an tionscnamh arís (nó `create extension vector` mar shárúsáideoir), agus ansin mar `quire_migrator`:

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

Tá sé saor ó dhúbailt agus filleann sé `enabled` nó `unavailable`. Rith ar gach bunachar tionónta tiomnaithe freisin.

## Fill ar ais <!--quire:rolling-back-->

Bíonn filleadh ar **chód** ar fáil i gcónaí: socraigh `QUIRE_RELEASE` ar an gclib roimhe agus rith `up -d` arís. Oibríonn sé sin mar go bhfuil an scéimre comhoiriúnach sa dá threo laistigh d'eisiúint.

Ní chuirtear filleadh ar **scéimre** ar fáil. Seo rudaí nach féidir a chealú, agus conas teacht chucu féin:

| Rud nach féidir a chealú | Aisghabháil |
| --- | --- |
| Aistriú craptha a bhain colún | Athchóirigh go tráthphointe roimh an mbaint i mbunachar nua, bain amach na sonraí agus cumaisc iad |
| Athrú sonraí in áit | Mar an gcéanna, ansin réitigh scríbhinní ón am ina dhiaidh |
| Webhooks agus imeachtaí seolta | Imeachtaí cúitimh, ná scrios iad choíche |
| Ríomhphost seolta | Scríobhann duine an teachtaireacht leantach |
| Slabhra hais iniúchta | Ní athscríobhtar riamh é; cuirtear iontráil cheartúcháin leis |

Sin an fáth a seoltar aistriú craptha leis féin: cruthaíonn athchóiriú teorainn ghlan ansin.

## Seiceáil an t-uasghrádú <!--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/ga/ops/upgrade/index.mdx
