---
title: "Te whakahou me te kore wehenga"
description: "Whakahoua a Quire e whakahaeretia ana e koe, me te kore wehenga."
image: "https://docs.quirelms.com/og.png"
---

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

# Te whakahou me te kore wehenga

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

Kei te `docs/architecture/23-ops.md` wāhanga 7 me te
`docs/architecture/07-data.md` wāhanga 4.1 ngā ture. Ko tēnei te tukanga.

## Te tūpono e haumaru ana i te whakahou <!--quire:the-guarantee-that-makes-it-safe-->

**Ka mahi tika te whakaputanga R ki te kupunga R me te kupunga R-1.** Ka wehea
ia huringa kupunga ki te whakarnui, te whakawhiti me te whakaiti:

1. **Whakarnui**: tāiritia te pou hou, te pūrataka rānei te tohu whakarārangi.
   Ka kore e mātakitaki te waehere tawhito i a ia.
2. **Te whakawhiti**, mō te iti rawa tētahi whakaputanga: ka tuhi te waehere hou
   i ē āhua e rua, ā, ka pānui i te āhua hou; ka tātai tētahi mahi e taea te
   tukina anō i ngā rārangi tawhito.
3. **Te whakaiti**: tangohia te āhua tawhito, i tētahi whakaputanga i muri mai,
   motuhake.

Nō reira i ia wā o tētahi whakahou e haere tonu ana, ka āea ngā pū tawhito me
ngā hou te tohono i tētahi pūtaka. Kāore he whakawhiti whakararo: ka kore e taea
e tētahi whakawhiti kua tangohia pou i te haora i mua te tuku anō i ngā rārangi
kua tuhia i tērā haora.

Ka tātaritia e te mahi CI `schema-compat` te tūpono i ia whakaputanga ma te
whakatu ngā whakamātau o te whakaputanga i mua ki te kupunga hou.

## I mua i te tīmata <!--quire:before-you-start-->

1. Pānuitia ngā tuhipoka whakaputanga. Ka kōrerotia e tētahi whakaputanga e
   hiahiatia ana tētahi wā tiaki, me te tataunga; iti rawa tētahi ia
   whakaputanga.
2. Whakatematemaina te whakamātau whakahoki, rānei tautuhia kua oti pai ia mō
   tēnei whakaputanga ([backup-restore.md](/mi/ops/backup-restore/)). Ka ārahi tētahi
   whakamātau kua rahua i te whakahou.
3. Tangohia he pupuniBackup tūmatanui: `docker compose -f docker/compose.yaml
   --profile backup run --rm backup`.

## Docker Compose, tētahi pūrere <!--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
```

He whakaaro tika te tātari:

1. **Whakawhiti tuatahi**, i te wā e tuku ana te whakaputanga tawhito i te rere.
   Ka kore e kite ia i ngā whakawhiti whakarnui.
2. **Te wāhanga ipurangi i muri.** I te SIGTERM ka huri ia pū ipurangi te
   `/readyz` ki te `draining`, ka oti i roto i te 30 hēkona ngā tono kei te
   rere, ka katia ngā rere me tētahi tohutohu hono anō, ā, ka wehea. Ko te
   `stop_grace_period` ko te 40 hēkona, nō reira kāore e tapa te Compose i
   tētahi whakatā e ora ana.
3. **Ngā kai mahi te mutunga**, kia hanga te āhua o te take hou rawa i mua i te
   whā o te kai whangai hou rawa. Ka tū ngā kai mahi i te wā kotahi te rapu, ā,
   ka whiwhi rātou i te 120 hēkona; ka rapua anō ki tētahi atu wāhi tētahi mahi
   kāore e taea te oti, he haumaru tēnei i te mea he ōrite te mahi o ia mahi. Ka
   tuku te kaiwhakarite i te ārahi i tōna tākiri nō muri.

I tētahi pūrere, ka whakakapia e te Compose ia ipupā i te kōtahi ā-wāhanga, nō
reira he wā poto te wehenga ia ratonga. Kia kore wehenga katoa, whakatū te
wāhanga ipurangi hei ipupā e rua i muri i tō ake proxy (tētahi kōnae whakakapi e
tāpiritia ana tētahi ratonga web tuarua me te poro kua tuku), ā, hanga anō rātou i
te kōtahi ā-wāhanga, e tatari ana i ia tētahi e rongo ana te hauora i mua i te
tahi.

## Ētahi atu pūrere rānei tētahi kaiwhakahaere <!--quire:several-hosts-or-an-orchestrator-->

Whakamahia te tātari kotahi: whakawhiti kotahi mai i tētahi mahi motuhake, kātia
ka āwehia te wāhanga ipurangi me te tuku kotahi me te kore tuku, kātia ngā kai
mahi. Tūhono ngā tiro ora ki te `/readyz` me ngā tiro ora ki te `/healthz`.

Me ngā pūtaka wāhanga motuhake, ka mahi te kaupapa `migrate` i ē rua: ka
whakawhiti ia tuatahi i te pūtaka whakahaere, kātia ia pūtaka katoa e tuhia ana i
te `ops.tenant_database`, i te kōtahi ā-wāhanga, ia tētahi i raro i tōna ake
tāti. Kāore e tū te hapa i tētahi pūtaka wāhanga i te wehenga i ē atu. I te wā kua
oti ia pūtaka, ka tātaritia rātou ngā pukapuka whakawhiti, ā, ka wehea me te uara
kore mēnā kāore kua whakamahia e ia pūtaka katoa i tētahi tika ngā whakawhiti kua
whakamahia e te pūtaka whakahaere, me te tohu ia tētahi e opo ana rānei e tōkeke
ana. Ka whakaturia e te tahi whakahau te rārangi tatari i ia pūtaka, i te mea ka
tangohia te kai mahi ngā mahi o tētahi wāhanga pūmau i te wāhi i tuhia ai rātou.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```
Ka tāuta hoki te hekenga māori me te tatūnga tuatahi i ngā tuhinga ture Ingarihi taketake a te kaiwhakahaere Quire ki `ops.platform_policy_version`. He idempotent te kaiuta: ko ngā tinana Ingarihi ngaro anake me ngā tinana taupua i whakatō e te hekenga ka whakakapihia. Ka purangahia ngā kākano, ka whakaurua he putanga tā hou; ka mau tonu ngā tohutoro whakaae o mua me ngā tinana. Ka tiakina te putanga pono i tuhia e te kaiwhakahaere, tae atu ki te tauira, ā, me whakahaere mā te papatohu Kaupapahere o te pūhara. E kore rawa e panonitia ngā tuhinga kaupapahere kairīhi, ngā putanga me te whakaae e tēnei whakawhitinga. He tānga tēnei i te kupu a te kaiwhakahaere, ehara i te tiwhikete ture, i te whakatutuki aunoa rānei i ana kupu taurangi.


Ka tae ia pūtaka motuhake ma te ingoa i rēhitatia ana. Ka hiahiatia tētahi
pūtaka e rēhitatia ana ma te `env:QUIRE_DB_NORTHWIND_URL`:

| Tūhu | Te mahi |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Te tūwāhi taupānga, mō te wāhanga ipurangi me te kai mahi |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Te tūwāhi whakawhiti, mō tēnei whakahau me ngā nekehanga |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Kōwhiria: ka whakamahia anō te whakatīmata (ngā tūwāhi, ngā kupunga, ngā āwhina) i mua i te whakawhiti |

Ka whakaatuhia hei hapa tētahi pūtaka motuhake kāore hono `_MIGRATOR`, ehara i
te kore tātari. Ka āea te wāhanga ipurangi te āwehanga i te wā kua oti te pūtaka
whakahaere. Ka whakamōhiotia tētahi pūtaka wāhanga e opo ana i te haora; ka
karanga tētahi pūtaka i te rā kotahi.

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

Mai i te whakawhiti 0264 ka whakamahia te kohinga whakatakoto te tohu
whakarārangi pgvector HNSW i te wā e ārahi ana te tūmau i te whakamāhinga; ka
hangaina te ratonga `postgres` o te Compose me a ia (`docker/postgres.Dockerfile`).
Ka hangaia e te tuatahi `migrate` i muri i te hurihuri whakaahua te
whakamāhinga ma te whakatīmata kaiwhakamahi matua, ā, ka tāpiritia e te 0264 i
muri tētahi pou vekitorea e hangaia ana, ā, ka hangaia te tohu whakarārangi. Ka
tātari te tāpiritanga i te pou ka tuhi anō i te `app.ai_chunk` kotahi wā i raro i
tētahi tāti motuhake, nō reira ka tatari ngā tono whakatakoto i a ia; kāore tētahi
atu e pā ki tērā pūrataka.

I tētahi tūmau kāore he pgvector, ka tuhi te 0264 tētahi pānui, ā, kāore e huri
ia i tētahi mea, ā, ka noho tika te rapu. Mēnā he pgvector tawhito ake i te 0.8
ka hangaia te pou me te tohu, engari ka noho tika te rapu tae noa ki te whakahou i
te whakamāhinga (`alter extension vector update`), i te mea ka hiahiatia ngā tiro
ā-tukutahi o te HNSW mai i te 0.8. Kia whakawāhia ia i muri i tētahi tūmau kāore
ia, whakaturia te whakamāhinga, whakatematema anō te whakatīmata (rānei te
`create extension vector` ma te kaiwhakamahi matua), kātia ma te `quire_migrator`:

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

He ōrite ia mahi, ā, ka whakahoki i te `enabled` rānei te `unavailable`.
Whakatematema ia hoki i ia pūtaka wāhanga motuhake.

## Te whakahoki <!--quire:rolling-back-->

Ka āea i ngā wā katoa te whakahoki i te **waehere**: tautuhia te `QUIRE_RELEASE`
ki te tohu i mua, ā, ka tīmata anō te `up -d`. Ka mahi tēnei i te mea he whakarite
te kupunga i ē rārangi e rua i roto i tētahi whakaputanga.

Kāore e tukuna te whakahoki i te **kupunga**. Te mea kāore e taea te whakakore,
me te āhua whakaora:

| Kāore e taea te whakakore | Te whakaora |
| --- | --- |
| Tētahi whakawhiti whakaiti kua tangohia pou | Whakahoki ki te wā tūturu ki mua i te tangohanga ki tētahi pūtaka hou, tangohia, tāhono atua |
| Tētahi huringa raraunga i te wāhi | Te tahi, kātia whakatauranga ngā tuhi kua tae mai i muri i tērā |
| Ngā webhook me ngā take kua tukua | Ngā take whakatikanga, ehara i te mukua i ngā wā katoa |
| Ngā īmēra kua tukua | Ka tuhi tētahi tangata te mahi nō muri |
| Te hono wehenga arotake | Kāore i ngā wā katoa te tuhi anō; tāiritia tētahi tuhipoka whakatika |

Ko tēnei te aronga ka tukua motuhake te whakawhiti whakaiti: ka noho tētahi
rohe mārama mō te whakahoki i muri i tērā.

## Te tātari i te whakahou <!--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/mi/ops/upgrade/index.mdx
