---
title: "Sabuntawa ba tare da katsewa ba"
description: "Sabunta Quire da kake sarrafawa ba tare da katse aiki ba."
image: "https://docs.quirelms.com/og.png"
---

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

# Sabuntawa ba tare da katsewa ba

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

Dokokin suna cikin sashen 7 na `docs/architecture/23-ops.md` da sashen 4.1 na
`docs/architecture/07-data.md`. Ga hanya.

## Tabbacin da ke sa sabuntawa ya zama lafiya <!--quire:the-guarantee-that-makes-it-safe-->

**Siga R tana aiki da tsari R da kuma R minus ɗaya.** Ana raba kowane canjin tsari
zuwa faɗaɗa, sauyi da takaita:

1. **Faɗaɗa**: ƙara sabon shafi, tebur ko ma'aunin bincike. Tsohuwar lamba ba ta
   kula da shi.
2. **Sauyi**, na aƙalla siga ɗaya: sabuwar lamba tana rubuta siffofin biyu kuma
   tana karanta sabon; aiki da za a iya ci gaba da shi yana cike tsoffin layuka.
3. **Takaita**: cire tsohon tsari a wata siga ta gaba, shi kaɗai.

Saboda haka a kowane lokaci yayin sabuntawa a hankali, tsohuwar da sabuwar lamba
za su iya amfani da ma'ajiya ɗaya. Babu ƙaura zuwa baya: ƙaura da ta share shafi
awa guda da ta wuce ba za ta dawo da layukan da aka rubuta a wannan awa ba.

Aikin CI na `schema-compat` yana duba wannan tabbaci ga kowace siga ta gudanar da
gwaje-gwajen sigar da ta gabata a kan sabon tsarin.

## Kafin ka fara <!--quire:before-you-start-->

1. Karanta bayanan sakin siga. Idan siga tana buƙatar lokacin gyara, za ta
   faɗi haka da kiyasin tsawon lokaci; ba za a samu fiye da ɗaya a kowane siga ba.
2. Gudanar da atisayen maido, ko tabbatar an gudanar da shi cikin nasara ga wannan
   siga ([backup-restore.md](/ha/ops/backup-restore/)). Atisayen da ya gaza yana hana
   sabuntawa.
3. Ɗauki ajiyar tushe: `docker compose -f docker/compose.yaml --profile backup
   run --rm backup`.

## Docker Compose, uwar garke ɗaya <!--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
```

Tsarin yana da dalili:

1. **Yi ƙaura da farko**, yayin da tsohuwar siga ke karɓar zirga-zirga. Ba a ga
   faɗaɗar ƙaura daga tsohuwar ba.
2. **Sashen yanar gizo na gaba.** Idan aka aika SIGTERM, kowane tsarin yanar gizo
   yana sauya `/readyz` zuwa `draining`, ya kammala buƙatun da ke gudana cikin
   daƙiƙa 30, ya rufe rafuka tare da alamar sake haɗawa, sannan ya fita.
   `stop_grace_period` daƙiƙa 40 ne, saboda haka Compose ba ya katse tsarin da ke
   kammala rufewa lafiya.
3. **Masu aiki na ƙarshe**, domin a samar da sabon sifar taron kafin sabon mai
   karɓa ya jira ta. Masu aiki suna daina ɗauko aiki nan take kuma suna samun
   daƙiƙa 120; aikin da bai gama ba za a sake ɗauko shi wani wuri, abin da yake
   lafiya domin kowane aiki ba ya yin abu sau biyu. Mai tsara aiki yana miƙa jagoranci
   a zagayensa na gaba.

A uwar garke ɗaya, Compose yana maye gurbin kwantena ɗaya bayan ɗaya, don haka
akwai ɗan tsaiko ga kowane sabis. Domin babu tsaiko kwata-kwata, gudanar da sashen
yanar gizo a kwantena biyu bayan naka wakilin baya (fayil na override da ke ƙara
sabis na biyu ba tare da buɗe tashar waje ba), sannan sake ƙirƙirar kowannensu
ɗaya bayan ɗaya, kana jiran ya nuna lafiya kafin na gaba.

## Masu shirya kwantena a uwar garke da dama <!--quire:several-hosts-or-an-orchestrator-->

Yi amfani da tsari iri ɗaya: yi ƙaura sau ɗaya daga aiki guda, sannan sabunta
sashen yanar gizo da ƙarin kwantena guda ɗaya kuma babu mai katsewa, daga baya
masu aiki. Nuna gwajin shiri ga `/readyz` da gwajin rai ga `/healthz`.

Idan akwai ma'ajiyar bayanai ta musamman ga kowace ƙungiya, matakin `migrate` yana
yi duka: yana fara ƙaura ga ma'ajiyar sarrafawa, sannan ga kowace ma'ajiya a
`ops.tenant_database`, ɗaya bayan ɗaya ƙarƙashin makullinta. Kuskure a ma'ajiyar
ƙungiya ɗaya ba ya dakatar da sauran. Bayan an kammala dukkan ma'ajiyoyi, yana
kwatanta rajistar ƙaura kuma yana fita da lambar kuskure sai dukkan ma'ajiyoyi sun
yi daidai da waɗanda ma'ajiyar sarrafawa ta yi, yana kuma bayyana kowacce da ta
yi baya ko gaba. Haka nan umarni yana girka teburin jerin aiki a kowane ma'ajiya,
domin mai aiki yana cinye aikin ƙungiyar da aka keɓe daga inda aka rubuta shi.

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

Ana isa ga kowace ma'ajiya ta musamman ta sunan rajistarta. Ma'ajiyar da aka
yi rajista da `env:QUIRE_DB_NORTHWIND_URL` tana buƙatar:

| Maɓalli | Ana amfani da shi ga |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Matsayin manhaja, ga sashen yanar gizo da mai aiki |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Matsayin mai ƙaura, ga wannan umarni da ƙaura |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Zaɓi ne: sake amfani da matakan farawa (matsayi, tsare-tsari, mataimaka) kafin ƙaura |

Ana bayar da rahoton ma'ajiyar da aka yi rajista amma ba ta da haɗin `_MIGRATOR`
a matsayin kuskure, ba a tsallake ta ba. Sashen yanar gizo zai iya sabuntawa idan
an kammala ma'ajiyar sarrafawa. Sa'ar jinkiri a ma'ajiyar ƙungiya gargadi ne; jinkirin
kwana guda kuma yana aika gargaɗi mai tsanani.

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

Daga ƙaura 0264, tarin bayanan da ake amfani da su wajen kafa amsa yana amfani da
ma'aunin pgvector HNSW idan uwar garke tana da ƙarin fasalin; an gina sabis na
`postgres` na Compose da shi (`docker/postgres.Dockerfile`). `migrate` na farko
bayan sauya hoton tsarin yana ƙirƙirar ƙarin fasalin ta matakin farawa na superuser;
0264 kuma tana ƙara shafi vector da aka samar da gina ma'aunin bincike. Ƙara shafin
yakan sake rubuta `app.ai_chunk` sau ɗaya ƙarƙashin makulli na musamman, saboda
haka buƙatun neman tushe suna jira; babu sauran abin da ke taɓa teburin.

A uwar garken da ba ta da pgvector, 0264 tana rubuta sanarwa ba tare da canji ba,
kuma neman bayanai yana ci gaba da zama daidai. Idan pgvector ya girmi 0.8,
ana gina shafi da ma'auni amma neman bayanai yana ci gaba da zama daidai har sai
an sabunta ƙarin fasalin (`alter extension vector update`), domin duba HNSW mai
tacewa yana buƙatar binciken jere na sigar 0.8. Domin kunna shi daga baya a uwar
garken da ba ta da shi, girka ƙarin fasalin, sake gudanar da matakin farawa (ko
`create extension vector` a matsayin superuser), sannan a matsayin `quire_migrator`:

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

Umarnin ba ya yin abu fiye da sau ɗaya kuma yana dawo da `enabled` ko `unavailable`.
Gudanar da shi a kowace ma'ajiya ta musamman ta ƙungiya ma.

## Mayar da sigar baya <!--quire:rolling-back-->

Mayar da **lamba** zuwa baya yana samuwa koyaushe: saita `QUIRE_RELEASE` zuwa
alamar sigar baya kuma sake `up -d`. Hakan yana aiki domin tsarin ya dace a duka
alkibla a cikin siga.

Ba a bayar da mayar da **tsari** zuwa baya ba. Abin da ba za a iya sokewa ba da
yadda za a dawo daga gare shi:

| Ba za a iya sokewa ba | Hanyar dawowa |
| --- | --- |
| Ƙaura ta takaita da ta share shafi | Mayar da hoton lokaci kafin sharewa zuwa sabon ma'ajiya, ciro bayanai, haɗa su |
| Canjin bayanai a wuri | Haka nan, sannan daidaita rubutun da aka yi tun daga lokacin |
| Webhooks da tarurrukan da aka aika | Tarurrukan rama abin da ya faru, ba sharewa ba |
| Imel da aka aika | Mutum ne zai rubuta saƙon bin sawu |
| Sarkar hash ta tantancewa | Ba a sake rubuta ta; ƙara shigarwar gyara |

Shi ya sa ƙaura ta takaita ke zuwa ita kaɗai: maido da bayanai yana da iyaka
bayyananniya.

## Duba sabuntawa <!--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/ha/ops/upgrade/index.mdx
