Reglurnar eru í docs/architecture/23-ops.md kafla 7 og
docs/architecture/07-data.md kafla 4.1. Þetta er verklagið.
Ábyrgðin sem gerir þetta öruggt
Útgáfa R keyrir rétt gagnvart skema R og skema R mínus eitt. Hverri skemabreytingu er skipt í útvíkkun, umbreytingu og samdrátt:
- Útvíkkun: bættu við nýjum dálki, töflu eða vísitölu. Gamli kóðinn hunsar hana.
- Umbreyting, í að minnsta kosti eina útgáfu: nýi kóðinn skrifar bæði formin og les það nýja; verk sem hægt er að halda áfram fyllir á gamlar raðir.
- Samdráttur: felldu gamla formið brott, í síðari útgáfu, eitt og sér.
Svo á hverju augnabliki veltandi uppfærslu geta gömul og ný ferli deilt einum gagnagrunni. Engir niðurflutningar eru til: flutningur sem felldi dálk fyrir klukkutíma getur ekki skilað aftur röðunum sem skrifaðar voru á þeim tíma.
schema-compat CI-verkið athugar ábyrgðina við hverja útgáfu með því að keyra
prófanir fyrri útgáfu gagnvart nýja skemanu.
Áður en þú byrjar
- Lestu útgáfuupplýsingarnar. Útgáfa sem þarf viðhaldsglugga segir það, með áætlun; að hámarki einn á hverja útgáfu.
- Keyrðu endurheimtaræfinguna, eða staðfestu að hún hafi keyrt græn fyrir þessa útgáfu (backup-restore.md). Misheppnuð æfing stöðvar uppfærsluna.
- Taktu grunnöryggisafrit:
docker compose -f docker/compose.yaml --profile backup run --rm backup.
Docker Compose, einn hýsill
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 schedulerRöðin er vísvitandi:
- Flyttu fyrst, meðan gamla útgáfan þjónar umferð. Útvíkkunarflutningar eru ósýnilegir henni.
- Vefþrepið næst. Við SIGTERM snýr hvert vefferli
/readyzídraining, klárar ferli beiðnir innan 30 sekúndna, lokar straumum með endurtengingarvísbendingu og hættir.stop_grace_perioder 40 sekúndur svo Compose sker aldrei heilbrigða tæmingu. - Vinnsluvélarnar síðast, svo nýjasta atburðaformið sé framleitt áður en nýjasti neytandinn býst við því. Vinnsluvélar hætta að sækja þegar í stað og fá 120 sekúndur; verk sem nær ekki að klára er sótt aftur annars staðar, sem er öruggt því hvert verk er samtaka (idempotent). Stýringin afhendir forystuna við næsta takt.
Á einum hýsil skiptir Compose út hverjum gámi í einu, svo stutt bil verður á hverri þjónustu. Fyrir ekkert bil alls skaltu keyra vefþrepið sem tvo gáma bak við eiginn milliþjón (yfirlýsingarskrá sem bætir við annarri vefþjónustu án útgefins gáttar), og endurskapa þá einn í einu og bíða þar til hver melder heilbrigðan áður en sá næsti kemur.
Flerri hýslar eða stjórntæki
Notaðu sömu röð: flyttu einu sinni frá einu verki, veltu síðan vefþrepinu
með einum auka og núll ótiltækum, síðan vinnsluvélunum. Beindu viðbúnaðarkönnunum
að /readyz og lífsmörkum að /healthz.
Með sérstökum leigjendagagnagrunnum gerir migrate-skrefið bæði: það flytur
stjórngagnagrunninn fyrst, síðan hvern gagnagrunn sem talinn er í
ops.tenant_database, einn í einu, hvern undir eigin læsingu. Bilun í
einum leigjendagagrunni stöðvar ekki hina. Þegar hver gagnagrunnur er búinn
ber það saman flutningabækurnar og hættir með núll ef ekki að hver gagnagrunnur hefur
beitt nákvæmlega þeim flutningum sem stjórngagnagrunnurinn hefur, og nefnir hvern sem er
á eftir eða á undan. Sama skipun setur upp biðraðartöflurnar í hverjum
gagnagrunni, því vinnsluvélin neytir verka fests leigjanda þar sem þau voru
skrifuð.
bun apps/worker/src/migrate.ts # what the Compose step runs
bun run db:migrate:all # the same, from a checkoutHver sérstakur gagnagrunnur er náð í gegnum nafnið sem hann er skráður undir.
Gagnagrunnur skráður sem env:QUIRE_DB_NORTHWIND_URL þarf:
| Breyta | Notuð fyrir |
|---|---|
QUIRE_DB_NORTHWIND_URL |
Forritshlutverkið, fyrir vefþrepið og vinnsluvélina |
QUIRE_DB_NORTHWIND_URL_MIGRATOR |
Flutningshlutverkið, fyrir þessa skipun og fyrir færslur |
QUIRE_DB_NORTHWIND_URL_SUPERUSER |
Valfrjálst: beitir grunnuppsetningunni aftur (hlutverkum, skemum, hjálparföllum) fyrir flutning |
Skráður gagnagrunnur án _MIGRATOR-tengingar er meldur sem bilun,
aldrei sleppt. Vefþrepið getur velt þegar stjórngagnagrunnurinn er búinn.
Leigjendagagnagrunnur sem er klukkutíma á eftir varar; sem er dag á eftir kallar.
pgvector
Frá flutningi 0264 notar jarðtengingarbody (grounding corpus) pgvector HNSW-vísitölu þar
sem þjónninn hefur viðbótina; postgres-þjónusta Compose er byggð með
henni (docker/postgres.Dockerfile). Fyrsti migrate eftir skiptingu
mynda býr til viðbótina í gegnum ofurnotanda-grunnuppsetninguna, og 0264 bætir síðan
við mynduðum vigurdálki og byggir vísitöluna. Það að bæta dálkinum við
endurskrifar app.ai_chunk einu sinni undir útilokandi læsingu, svo jarðtengingarbeiðnir
bíða eftir henni; ekkert annað snertir þá töflu.
Á þjóni án pgvector skráir 0264 tilkynningu og breytir engu, og
heimt helst nákvæm. Með pgvector eldri en 0.8 eru dálkurinn og vísitalan
byggð en heimt helst nákvæm þar til viðbótin er uppfærð
(alter extension vector update), því síaðar HNSW-leitir þurfa 0.8
ítrekaðar leitir. Til að kveikja á henni síðar á þjóni án hennar skaltu setja upp
viðbótina, keyra grunnuppsetninguna aftur (eða create extension vector sem
ofurnotandi), síðan sem quire_migrator:
set maintenance_work_mem = '1GB'; -- the HNSW build is much faster in memory
select ops.ai_chunk_enable_vector_index();Hún er samtaka og skilar enabled eða unavailable. Keyrðu hana á hverjum
sérstökum leigjendagagrunni líka.
Bakfærsla
Bakfærsla kóða er alltaf í boði: stilltu QUIRE_RELEASE á
fyrra merki og up -d aftur. Það virkar því skemað er samhæft
í báðar áttir innan útgáfu.
Bakfærsla skema er ekki í boði. Það sem ekki er hægt að afturkalla, og hvernig á að jafna sig á því:
| Ekki afturkræft | Bati |
|---|---|
| Samdráttarflutningur sem felldi dálk | Endurheimtu til tíma fyrir brottfellingu í nýjan gagnagrunn, dragðu út, sameinaðu |
| Gagnabreyting á staðnum | Sama, sameinaðu síðan skrif síðan |
| Sendir vefkrókar og atburðir | Bæturatburðir, aldrei eyðing |
| Sendur tölvupóstur | Manneskja skrifar framhaldið |
| Úttektar-hashkeðjan | Aldrei endurskrifuð; bættu við leiðréttingarfærslu |
Þess vegna kemur samdráttarflutningur einn og sér: endurheimt fær þá hrein mörk.
Athuga uppfærsluna
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