Ir-regoli jinsabu f’docs/architecture/23-ops.md sezzjoni 7 u
docs/architecture/07-data.md sezzjoni 4.1. Din hija l-proċedura.
Il-garanzija li tagħmilha sigura
Release R taħdem korrettement kontra schema R u schema R nieqes waħda. Kull bidla tal-iskema tinqasam fi expand, transition u contract:
- Expand: żid il-kolonna, it-tabella jew l-indiċi l-ġdid. Il-kodiċi l-qadim jinjoraha.
- Transition, għal mill-inqas release waħda: il-kodiċi l-ġdid jikteb iż-żewġ forom u jaqra l-ġdida; xogħol li jista’ jitkompla jimla r-ringieli qodma.
- Contract: armi l-forma l-qadima, f’release aktar tard, waħedha.
Għalhekk f’kull mument ta’ aġġornament rolling, proċessi qodma u ġodda jistgħu jaqsmu database waħda. M’hemm l-ebda migrazzjoni ’l isfel: migrazzjoni li armat kolonna siegħa ilu ma tistax trodd lura r-ringieli miktuba f’dik is-siegħa.
Ix-xogħol CI schema-compat jiċċekkja l-garanzija f’kull release billi jħaddem
it-testijiet tar-release ta’ qabel kontra l-iskema l-ġdida.
Qabel ma tibda
- Aqra n-noti tar-release. Release li teħtieġ tieqa ta’ manutenzjoni tgħid hekk, bl-istima; l-aktar waħda għal kull release.
- Ħaddem id-drill tar-restore, jew ikkonferma li ħadem aħdar għal din ir-release (backup-restore.md). Drill fallut jimblokka l- aġġornament.
- Ħu backup bażi:
docker compose -f docker/compose.yaml --profile backup run --rm backup.
Docker Compose, host wieħed
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 schedulerL-ordni hija deliberata:
- Emigra l-ewwel, waqt li r-release l-qadima sservi t-traffiku. Migrazzjonijiet Expand huma inviżibbli għaliha.
- Il-livell web wara. Fuq SIGTERM kull proċess web idawwar
/readyzgħaldraining, ilesti talbiet in-flight fi żmien 30 sekonda, jagħlaq streams b’ħjiel ta’ konnessjoni mill-ġdid, u joħroġ.stop_grace_periodhuwa 40 sekonda biex Compose qatt ma jaqta’ drain b’saħħtu. - Workers l-aħħar, biex il-forma tal-avveniment l-aktar ġdida tiġi prodotta qabel ma l-aktar ġdid konsumatur jistenniha. Workers jieqfu jġibu f’daqqa u jieħdu 120 sekonda; xogħol li ma jistax jispiċċa jerġa’ jinġieb x’imkien ieħor, li huwa sigur għax kull xogħol huwa idempotenti. L-iskedar jgħaddi t-tmexxija fid-dawra li jmiss tiegħu.
Fuq host wieħed, Compose jissostitwixxi kull container min-naħa tiegħu, għalhekk hemm vojt qasir għal kull servizz. Għal ebda vojt xejn, ħaddem il-livell web bħala żewġ containers wara il-proxy tiegħek (fajl override li jżid it-tieni servizz web mingħajr port ippubblikat), u oħloqhom mill-ġdid wieħed kull darba, tistenna lil kull wieħed jirrapporta b’saħħtu qabel li jmiss.
Diversi hosts jew orkestratur
Uża l-istess ordni: emigra darba minn xogħol wieħed, imbagħad dawwar il-livell web
b’surge wieħed u mhux disponibbli żero, imbagħad il-workers. Indika sondi ta’ readiness
lejn /readyz u liveness lejn /healthz.
B’databases dedikati tat-tenant, il-pass migrate jagħmel it-tnejn: jemigra
id-database tal-kontroll l-ewwel, imbagħad kull database elenkata f’
ops.tenant_database, waħda kull darba, kull waħda taħt il-lock tagħha. Falliment f’
database waħda tat-tenant ma jwaqqafx lill-oħrajn. Meta kull database titlesta dan
iqabbel il-ledgers tal-migrazzjoni u joħroġ non-zero sakemm kull database tkun
applikat eżatt il-migrazzjonijiet li d-database tal-kontroll għandha, billi jsemmi kull waħda li hija
wara jew quddiem. L-istess kmand jinstalla t-tabelli tal-queue f’kull
database, għax il-worker jikkonsma x-xogħol ta’ tenant imwaħħal fejn kienu
miktuba.
bun apps/worker/src/migrate.ts # what the Compose step runs
bun run db:migrate:all # the same, from a checkoutIl-migrazzjoni normali u s-setup tal-ewwel ġirja jinstallaw ukoll id-dokumenti legali Ingliżi kanoniċi tal-operatur Quire f’ops.platform_policy_version. L-installatur huwa idempotenti: il-korpi Ingliżi neqsin biss u preċiż il-korpi placeholder maħluqa mill-migrazzjoni jiġu sostitwiti. Iż-żrieragħ jiġu arkivjati u tiżdied verżjoni ppubblikata ġdida; ir-referenzi storiċi ta’ aċċettazzjoni u l-korpi jinżammu. Kwalunkwe verżjoni ġenwina miktuba mill-operatur, inkluż abbozz, tinżamm u trid tiġi mmaniġġjata permezz tal-console tal-Policies tal-pjattaforma. Id-dokumenti, il-verżjonijiet u l-kunsens tal-politiki tal-kerrej qatt ma jinbidlu b’din it-transizzjoni. Din hija pubblikazzjoni tat-test tal-operatur, mhux ċertifikazzjoni legali u lanqas twettiq awtomatiku tal-wegħdiet tiegħu.
Kull database dedikata tintlaħaq permezz tal-isem li hija rreġistrata taħtu.
Database rreġistrata bħala env:QUIRE_DB_NORTHWIND_URL teħtieġ:
| Variable | Used for |
|---|---|
QUIRE_DB_NORTHWIND_URL |
Ir-rwol tal-applikazzjoni, għal-livell web u l-worker |
QUIRE_DB_NORTHWIND_URL_MIGRATOR |
Ir-rwol tal-migratur, għal dan il-kmand u għal ċaqliq |
QUIRE_DB_NORTHWIND_URL_SUPERUSER |
Fakultattiv: jerġa’ japplika l-bootstrap (rwoli, skemi, helpers) qabel ma jemigra |
Database rreġistrata bla konnessjoni _MIGRATOR tiġi rrapportata bħala falliment,
qatt skippjata. Il-livell web jista’ ddawwar ladarba d-database tal-kontroll titlesta. Database
tat-tenant lura b’siegħa twissi; b’ġurnata tpeġġja.
pgvector
Mill-migrazzjoni 0264 il-corpus tal-grounding juża indiċi pgvector HNSW fejn
is-server għandu l-estensjoni; is-servizz postgres ta’ Compose huwa mibni biha
(docker/postgres.Dockerfile). L-ewwel migrate wara li tbiddel
l-immaġnijiet toħloq l-estensjoni permezz tal-bootstrap tas-superuser, u 0264 imbagħad
iżid kolonna vettorjali ġġenerata u tibni l-indiċi. Iż-żieda tal-kolonna
terġa’ tikteb app.ai_chunk darba taħt lock esklussiva, biex talbiet ta’ grounding
jistennewha; xejn ieħor ma jmiss dik it-tabella.
Fuq server mingħajr pgvector, 0264 jilloggja avviż u ma jbiddel xejn, u
l-irkupru jibqa’ eżatt. B’pgvector anzjan minn 0.8 il-kolonna u l-indiċi
jinbnew iżda l-irkupru jibqa’ eżatt sakemm l-estensjoni tiġi aġġornata
(alter extension vector update), għax scans HNSW iffiltrati jeħtieġu scans
iterattivi ta’ 0.8. Biex tattivaha aktar tard fuq server mingħajrha, installa l-
estensjoni, ħaddem il-bootstrap mill-ġdid (jew create extension vector bħala
superuser), imbagħad bħala quire_migrator:
set maintenance_work_mem = '1GB'; -- the HNSW build is much faster in memory
select ops.ai_chunk_enable_vector_index();Hija idempotenti u tirritorna enabled jew unavailable. Ħaddimha fuq kull
database dedikata tat-tenant ukoll.
Treġġigħ lura
It-treġġigħ lura tal-kodiċi huwa dejjem disponibbli: issettja QUIRE_RELEASE għat-
tag ta’ qabel u up -d mill-ġdid. Dan jaħdem għax l-iskema hija kompatibbli
fiż-żewġ direzzjonijiet f’release.
It-treġġigħ lura tal-iskema mhuwiex offrut. Dak li ma jistax jitneħħa, u kif tirkupra minnu:
| Not reversible | Recovery |
|---|---|
| Migrazzjoni contract li armat kolonna | Restore puntwal għal qabel it-tneħħija f’database ġdida, estrai, waħħad |
| Bidla tad-data fil-post | L-istess, imbagħad irrikonċilja kitbiet minn dakinhar |
| Webhooks u avvenimenti mibgħuta | Avvenimenti kumpensatorji, qatt tħassir |
| Email mibgħuta | Bniedem jikteb is-segwitu |
| Il-katina hash tal-verifika | Qatt miktuba mill-ġdid; żid entrata ta’ korrezzjoni |
Għalhekk migrazzjoni contract tibgħat waħedha: restore imbagħad ikollu konfini nadif.
Kontroll tal-aġġornament
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