Fara beint í efni

Uppfærsla án niðritíma

Uppfærðu sjálfhýsta Quire án niðritíma.

Skoða sem Markdown

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:

  1. Útvíkkun: bættu við nýjum dálki, töflu eða vísitölu. Gamli kóðinn hunsar hana.
  2. 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.
  3. 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

  1. Lestu útgáfuupplýsingarnar. Útgáfa sem þarf viðhaldsglugga segir það, með áætlun; að hámarki einn á hverja útgáfu.
  2. 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.
  3. 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 scheduler

Röðin er vísvitandi:

  1. Flyttu fyrst, meðan gamla útgáfan þjónar umferð. Útvíkkunarflutningar eru ósýnilegir henni.
  2. 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_period er 40 sekúndur svo Compose sker aldrei heilbrigða tæmingu.
  3. 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 checkout

Hver 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
Yfirlit

Sláðu inn til að leita…

↑↓ fletta↵ veljaEsc loka