Léim chuig an ábhar

Uasghrádú gan aga neamhfhónaimh

Uasghrádaigh Quire féinoibrithe gan aga neamhfhónaimh.

Féach mar Markdown

Tá na rialacha in alt 7 de docs/architecture/23-ops.md agus in alt 4.1 de docs/architecture/07-data.md. Seo an nós imeachta.

An ráthaíocht a fhágann sábháilte é

Ritheann Eisiúint R mar is ceart le scéimre R agus le scéimre R lúide a haon. Roinntear gach athrú scéimre ina leathnú, aistriú agus crapadh:

  1. Leathnú: cuir an colún, tábla nó innéacs nua leis. Déanann seanchód neamhaird de.
  2. Aistriú, ar feadh eisiúint amháin ar a laghad: scríobhann cód nua an dá chruth agus léann sé an ceann nua; líonann jab in-athnuaite na seanraitheanna siar.
  3. Crapadh: bain an seanchruth i leagan níos déanaí, leis féin.

Mar sin, ag gach tráth d’uasghrádú céimneach, is féidir le próisis shean agus nua bunachar sonraí amháin a roinnt. Níl aistrithe íslithe ann: ní féidir le haistriú a bhain colún uair an chloig ó shin na rónna a scríobhadh san uair sin a thabhairt ar ais.

Seiceálann jab CI schema-compat an ráthaíocht i ngach eisiúint trí thástálacha na heisiúna roimhe a rith in aghaidh na scéimre nua.

Sula dtosaíonn tú

  1. Léigh nótaí na heisiúna. Luaitear fuinneog chothabhála riachtanach inti, agus meastachán uirthi; ní bhíonn níos mó ná ceann amháin in aghaidh eisiúna.
  2. Rith cleachtadh athchóirithe, nó deimhnigh gur chríochnaigh sé go rathúil don eisiúint seo (backup-restore.md). Cuireann cleachtadh ar theip air bac ar an uasghrádú.
  3. Déan cúltaca bunúsach: docker compose -f docker/compose.yaml --profile backup run --rm backup.

Docker Compose, óstach amháin

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

Tá an t-ord d’aon ghnó:

  1. Déan an t-aistriú ar dtús, agus an sean-eisiúint ag freastal ar thrácht. Ní fheiceann sí aistrithe leathnaithe.
  2. An tsraith ghréasáin ina diaidh. Ar SIGTERM, athraíonn gach próiseas gréasáin /readyz go draining, críochnaíonn sé iarratais atá ar siúl laistigh de 30 soicind, dúnann sé sruthanna le leid athcheangail, agus scoireann sé. Is é 40 soicind stop_grace_period, ionas nach ngearrann Compose draein shláintiúil riamh.
  3. Na próiseálaithe ar deireadh, ionas go gcruthófar cruth an imeachta is nua sula mbíonn an tomhaltóir is nua ag súil leis. Stopann próiseálaithe d’iarratais nua láithreach agus tugtar 120 soicind dóibh; faightear jab nach féidir leis críochnú arís in áit eile, rud atá sábháilte mar tá gach jab saor ó dhúbailt. Tugann an sceidealóir an cheannaireacht ar aghaidh ar an gcéad tic eile.

Ar óstach amháin, ionadaíonn Compose gach coimeádán ar a sheal, mar sin bíonn bearna ghairid in aghaidh na seirbhíse. Chun gan aon bhearna a bheith ann, rith dhá choimeádán den tsraith ghréasáin taobh thiar de do sheachfhreastalaí féin (comhad sáraíochta a chuireann an dara seirbhís web leis gan calafort foilsithe), agus athchruthaigh ceann ar cheann iad; fan go dtuairisceoidh gach ceann sláinte sula dtéann tú ar aghaidh go dtí an chéad cheann eile.

Ilóstach nó ceolfhoirneoir

Úsáid an t-ord céanna: aistrigh uair amháin ó jab amháin, rollaigh an tsraith ghréasáin le borradh amháin agus gan aon cheann ar fáil, ansin na próiseálaithe. Dírigh tóireadóirí ullmhachta ar /readyz agus tóireadóirí beogachta ar /healthz.

Le bunachair shonraí tionónta tiomnaithe, déanann céim migrate an dá rud: aistríonn sí an bunachar rialaithe ar dtús, ansin gach bunachar atá liostaithe in ops.tenant_database, ceann ar cheann faoina ghlas féin. Ní chuireann teip i mbunachar tionónta amháin stop leis na cinn eile. Nuair a chríochnaítear iad ar fad, déanann sí comparáid idir mórleabhair na n-aistrithe agus filleann sí cód neamh-nialasach mura bhfuil na haistrithe céanna go díreach curtha i bhfeidhm i ngach bunachar agus atá sa bhunachar rialaithe; ainmníonn sí gach ceann atá chun deiridh nó chun cinn. Suiteálann an t-ordú céanna táblaí na scuaine i ngach bunachar freisin, mar ídíonn an próiseálaí jabanna tionónta phionnáilte sa bhunachar inar scríobhadh iad.

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

Sroichtear gach bunachar tiomnaithe faoin ainm faoina bhfuil sé cláraithe. Teastaíonn na rudaí seo a leanas ó bhunachar atá cláraithe mar env:QUIRE_DB_NORTHWIND_URL:

Athróg Úsáid
QUIRE_DB_NORTHWIND_URL Ról an fheidhmchláir, don tsraith ghréasáin agus don phróiseálaí
QUIRE_DB_NORTHWIND_URL_MIGRATOR Ról an aistritheora, don ordú seo agus d’aistrithe
QUIRE_DB_NORTHWIND_URL_SUPERUSER Roghnach: athchuireann an tionscnamh róil, scéimrí agus cúntóirí i bhfeidhm roimh an aistriú

Tuairiscítear gur teip é bunachar cláraithe gan ceangal _MIGRATOR; ní scipeáiltear é riamh. Is féidir an tsraith ghréasáin a rolladh nuair a bheidh an bunachar rialaithe críochnaithe. Tugtar rabhadh má bhíonn bunachar tionónta uair an chloig ar gcúl; tar éis lae seoltar fógra práinneach.

pgvector

Ó aistriú 0264 ar aghaidh, úsáideann corpas bunúsaithe innéacs HNSW pgvector nuair atá an breiseán ag an bhfreastalaí; tógtar seirbhís Compose postgres leis (docker/postgres.Dockerfile). Cruthaíonn an chéad migrate tar éis íomhánna a athrú an breiseán tríd an tionscnamh sárúsáideora, agus cuireann 0264 colún veicteora ginte leis agus tógann sé an t-innéacs. Athscríobhann cur leis an gcolún app.ai_chunk uair amháin faoi ghlas eisiach, mar sin fanann iarratais bhunúsaithe go dtí go mbeidh sé déanta; ní dhéanann aon rud eile difear don tábla sin.

Ar fhreastalaí gan pgvector, logálann 0264 fógra agus ní athraíonn sé tada; fanann aisghabháil beacht. Le pgvector níos sine ná 0.8, tógtar an colún agus an t-innéacs ach fanann aisghabháil beacht go dtí go n-uasghrádaítear an breiseán (alter extension vector update), mar go dteastaíonn scananna atriallacha le haghaidh scananna scagtha HNSW agus níor tháinig siad go dtí 0.8. Chun é a chumasú níos déanaí ar fhreastalaí gan é, suiteáil an breiseán, rith an tionscnamh arís (nó create extension vector mar shárúsáideoir), agus ansin mar quire_migrator:

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

Tá sé saor ó dhúbailt agus filleann sé enabled nó unavailable. Rith ar gach bunachar tionónta tiomnaithe freisin.

Fill ar ais

Bíonn filleadh ar chód ar fáil i gcónaí: socraigh QUIRE_RELEASE ar an gclib roimhe agus rith up -d arís. Oibríonn sé sin mar go bhfuil an scéimre comhoiriúnach sa dá threo laistigh d’eisiúint.

Ní chuirtear filleadh ar scéimre ar fáil. Seo rudaí nach féidir a chealú, agus conas teacht chucu féin:

Rud nach féidir a chealú Aisghabháil
Aistriú craptha a bhain colún Athchóirigh go tráthphointe roimh an mbaint i mbunachar nua, bain amach na sonraí agus cumaisc iad
Athrú sonraí in áit Mar an gcéanna, ansin réitigh scríbhinní ón am ina dhiaidh
Webhooks agus imeachtaí seolta Imeachtaí cúitimh, ná scrios iad choíche
Ríomhphost seolta Scríobhann duine an teachtaireacht leantach
Slabhra hais iniúchta Ní athscríobhtar riamh é; cuirtear iontráil cheartúcháin leis

Sin an fáth a seoltar aistriú craptha leis féin: cruthaíonn athchóiriú teorainn ghlan ansin.

Seiceáil an t-uasghrádú

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
Nascleanúint

Clóscríobh le cuardach…

↑↓ nascleanúint↵ roghnaighEsc dún