---
title: "Ùrachadh gun ùine-dhìth"
description: "Ùraich Quire fèin-aoigheachd gun ùine-dhìth."
image: "https://docs.quirelms.com/og.png"
---

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

# Ùrachadh gun ùine-dhìth

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

Tha na riaghailtean ann an earrann 7 de `docs/architecture/23-ops.md` agus ann an earrann 4.1 de `docs/architecture/07-data.md`. Seo am modh-obrach.

## Am barantas a nì sàbhailte e <!--quire:the-guarantee-that-makes-it-safe-->

**Bidh Tionndadh R ag obair ceart le sgeama R agus sgeama R às aonais aon.** Tha gach atharrachadh sgeama air a roinn na leudachadh, eadar-ghluasad agus cùmhnant:

1. **Leudaich**: cuir colbh, clàr no clàr-amais ùr ris. Leigidh an seann chòd seachad e.
2. **Eadar-ghluasad**, airson co-dhiù aon tionndaidh: sgrìobhaidh an còd ùr an dà chumadh agus leughaidh e am fear ùr; lìonaidh obair ath-thòiseachadh seann shreathan air ais.
3. **Cùmhnant**: leig às an t-seann chumadh ann an tionndadh às dèidh làimh, leis fhèin.

Mar sin, aig gach àm rè ùrachadh leantainneach, faodaidh seann phròiseasan is feadhainn ùra aon stòr-dàta a roinn. Chan eil imrich sìos ann: chan urrainn do dh’imrich a leig às colbh o chionn uair a thìde na sreathan a chaidh a sgrìobhadh san uair sin a thoirt air ais.

Nì obair CI `schema-compat` sgrùdadh air a’ bharantas gach tionndadh le bhith a’ ruith deuchainnean an tionndaidh roimhe an aghaidh an sgeama ùir.

## Mus tòisich thu <!--quire:before-you-start-->

1. Leugh notaichean an tionndaidh. Innsidh tionndadh a dh’fheumas uinneag-càraidh dhut sin agus bheir e tuairmse; chan eil barrachd air aon dhiubh gach tionndadh.
2. Ruith an deuchainn ath-nuadhachaidh, no dearbhaich gun do shoirbhich leatha airson an tionndaidh seo ([backup-restore.md](/gd/ops/backup-restore/)). Cuiridh deuchainn air fàilligeadh stad air an ùrachadh.
3. Dèan cùl-taic bunaiteach: `docker compose -f docker/compose.yaml --profile backup run --rm backup`.

## Docker Compose, aon aoigh <!--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
```

Tha an t-òrdugh seo a dh’aona ghnothach:

1. **Dèan imrich an toiseach**, fhad ’s a tha an seann tionndadh a’ frithealadh iarrtasan. Chan fhaic an seann tionndadh imrich leudachaidh.
2. **An ath rud, ùraich an t-sreath-lìn.** Air SIGTERM, cuiridh gach pròiseas-lìn `/readyz` gu `draining`, crìochnaichidh e iarrtasan a tha a’ dol taobh a-staigh 30 diog, dùinidh e sruthan le fios mu ath-cheangal agus sguiridh e. Tha `stop_grace_period` 40 diog gus nach cuir Compose stad air drèanadh fallain.
3. **Luchd-obrach mu dheireadh**, gus an tèid cumadh tachartais as ùire a chruthachadh mus bi an neach-cleachdaidh as ùire an dùil ris. Sguiridh luchd-obrach de thogail obraichean anns a’ bhad agus gheibh iad 120 diog; thèid obair nach urrainn crìochnachadh a thogail a-rithist ann an àite eile, rud a tha sàbhailte oir tha gach obair idempotent. Bheir an clàradair ceannardas thairis air san ath thic.

Air aon aoigh, cuiridh Compose innealan an àite a chèile, aon aig aon àm, agus mar sin bidh beàrn goirid airson gach seirbheis. Gus beàrn sam bith a sheachnadh, ruith an t-sreath-lìn ann an dà shoitheach air cùl an neach-ionaid agad fhèin (faidhle tar-àithne a chuireas dàrna seirbheis-lìn ris gun phort foillsichte), agus cruthaich a-rithist iad aon aig aon àm, a’ feitheamh gus am bi gach fear fallain mus gluais thu chun ath fhear.

## Iomadh aoigh no orchestrator <!--quire:several-hosts-or-an-orchestrator-->

Cleachd an aon òrdugh: dèan imrich aon turas bho obair shingilte, an uair sin gluais an t-sreath-lìn le aon thar-bheairt agus neoni dhiubh gun chothrom, agus an uair sin an luchd-obrach. Targaid deuchainnean deisealachd gu `/readyz` agus deuchainnean beòthachd gu `/healthz`.

Le stòran-dàta luchd-gabhail sònraichte, nì an ceum `migrate` an dà chuid: nì e imrich air stòr-dàta smachd an toiseach, agus an uair sin air gach stòr-dàta ann an `ops.tenant_database`, aon aig aon àm le glas fhèin. Cha chuir fàilligeadh ann an aon stòr-dàta bacadh air càch. Nuair a bhios gach stòr-dàta deiseil, nì e coimeas eadar leabhraichean-imrich agus fàgaidh e le inbhe neo-neoni mura h-eil gach stòr-dàta air na h-aon imrichean ris an stòr-dàta smachd a chur an sàs; ainmichidh e gach fear a tha air dheireadh no air thoiseach. Cuiridh an aon àithne clàran na ciudha anns gach stòr-dàta cuideachd oir ithidh an neach-obrach obraichean luchd-gabhail pinnte sa bhunait anns an deach an sgrìobhadh.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```
Bidh an imrich àbhaisteach agus a' chiad stèidheachadh cuideachd a' stàladh nan sgrìobhainnean laghail Bheurla cananach aig gnìomhaiche Quire ann an `ops.platform_policy_version`. Tha an stàlaichear idempotent: chan eil ach na teacsaichean Bheurla a tha a dhìth agus dìreach na teacsaichean sealach a chuir an imrich nan àite. Tha na sìol air an tasgadh agus tha tionndadh foillsichte ùr air a chur a-steach; tha iomraidhean gabhail eachdraidheil agus teacsaichean air an gleidheadh. Tha gach tionndadh fìor a sgrìobh an gnìomhaiche, a' gabhail a-steach dreachd, air a ghleidheadh agus feumar a riaghladh tro chonsail Poileasaidhean na h-àrd-ùrlair. Cha bhi sgrìobhainnean, tionndaidhean no cead poileasaidh luchd-gabhail air an atharrachadh leis a' ghluasad seo a-riamh. 'S e foillseachadh teacsa a' ghnìomhaiche a tha seo, chan e teisteanas laghail no coileanadh fèin-ghluasadach a gheallaidhean.


Ruigear gach stòr-dàta sònraichte tron ainm fon deach a chlàradh. Feumaidh stòr-dàta a chaidh a chlàradh mar `env:QUIRE_DB_NORTHWIND_URL`:

| Caochladair | Air a chleachdadh airson |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Dreuchd na h-aplacaid airson an t-sreath-lìn agus an neach-obrach |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Dreuchd imrich airson na h-àithne seo agus gluasadan |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Roghainneil: ruith bootstrap (dreuchdan, sgeamaichean, taicearan) a-rithist mus dèanar imrich |

Thèid stòr-dàta clàraichte gun cheangal `_MIGRATOR` aithris mar fhàilligeadh, chan ann a sheachnadh. Faodar an t-sreath-lìn a chur an sàs nuair a bhios stòr-dàta an smachd deiseil. Bheir stòr-dàta neach-gabhail a tha uair air dheireadh rabhadh; às dèidh latha cuiridh e duilleag rabhaidh.

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

Bho imrich 0264 tha corpas bunaitidh a’ cleachdadh clàr-amais HNSW pgvector ma tha an leudachan aig an fhrithealaiche; tha seirbheis Compose `postgres` air a togail leis (`docker/postgres.Dockerfile`). Cruthaichidh a’ chiad `migrate` an dèidh atharrachadh nan ìomhaighean an leudachan tro bootstrap an àrd-chleachdaiche; cuiridh 0264 colbh vector gineadh ris agus togidh e an clàr-amais. Ath-sgrìobhaidh cur ris a’ cholbh `app.ai_chunk` aon turas fo ghlas eisiach, agus mar sin feumaidh iarrtasan bunaitidh feitheamh; cha suath dad eile ris a’ chlàr sin.

Air frithealaiche gun pgvector, clàraichidh 0264 fios agus cha dèan e atharrachadh; bidh lorg ceart a’ leantainn. Le pgvector nas sine na 0.8, thèid colbh is clàr-amais a thogail ach cumaidh lorg ceart gus an tèid an leudachan ùrachadh (`alter extension vector update`), oir feumaidh sganaidhean HNSW le criathrag sganaidhean ath-aithriseach bho 0.8. Gus a chur air an dèidh sin air frithealaiche aig nach eil e, stàlaich an leudachan, ruith am bootstrap a-rithist (no `create extension vector` mar àrd-chleachdaiche), agus an uair sin mar `quire_migrator`:

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

Tha e idempotent agus tillidh e `enabled` no `unavailable`. Ruith e air gach stòr-dàta neach-gabhail sònraichte cuideachd.

## Till air ais <!--quire:rolling-back-->

Tha tilleadh air ais **còd** an-còmhnaidh comasach: suidhich `QUIRE_RELEASE` chun taga roimhe agus ruith `up -d` a-rithist. Obraichidh seo a chionn ’s gu bheil an sgeama co-chòrdail gach taobh taobh a-staigh tionndaidh.

Chan eil tilleadh air ais **sgeama** ri fhaighinn. Na rudan nach gabh ath-dhèanamh agus mar a gheibh thu air ais iad:

| Cha ghabh a thionndadh air ais | Ath-nuadhachadh |
| --- | --- |
| Imrich cùmhnaint a leig às colbh | Ath-nuadhaich gu àm mus deach a leigeil às ann an stòr-dàta ùr, thoir dàta a-mach agus co-aonaich |
| Atharrachadh dàta am broinn nan sreathan | Dèan an aon rud agus an uair sin rèitich sgrìobhaidhean bhon uair sin |
| Webhooks is tachartasan a chaidh a chur | Tachartasan dìolaidh, na sguab às idir |
| Post-d a chaidh a chur | Bidh neach a’ sgrìobhadh na leanmhainn |
| Sreath-hais sgrùdaidh | Na sgrìobh thairis oirre gu bràth; cuir inntrigeadh ceartachaidh ris |

Sin an t-adhbhar a thèid imrich cùmhnaint a chur air leth: bidh crìoch ghlan aig ath-nuadhachadh an uair sin.

## Thoir sùil air an ùrachadh <!--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/gd/ops/upgrade/index.mdx
