Мазмұнға өту

Кідіріссіз жаңарту

Өзіңіз орнатқан Quire-ді кідіріссіз жаңартыңыз.

Markdown ретінде қарау

Ережелер docs/architecture/23-ops.md құжатының 7-тармағында және docs/architecture/07-data.md құжатының 4.1-тармағында. Міне, рәсім.

Оны қауіпсіз ететін кепілдік

R шығарылымы R схемасымен және R минус бір схемасымен дұрыс жұмыс істейді. Әр схема өзгерісі expand, transition және contract болып бөлінеді:

  1. Expand: жаңа баған, кесте немесе индекс қосыңыз. Ескі код оны елемейді.
  2. Transition, кемінде бір шығарылым бойы: жаңа код екі пішімді де жазады және жаңасын оқиды; қайта жалғастырылатын жұмыс ескі жолдарды толтырады.
  3. Contract: ескі пішімді кейінгі шығарылымда, жалғыз өзі алып тастаңыз.

Сондықтан қадаммен жүретін жаңартудың әр сәтінде ескі де жаңа процесс бір дерекқорды бөлісе алады. Төменге миграциялар жоқ: бір сағат бұрын баған алып тастаған миграция сол сағатта жазылған жолдарды қайтара алмайды.

schema-compat CI жұмысы кепілдікті әр шығарылымда алдыңғы шығарылымның тесттерін жаңа схемаға қарсы жүргізіп тексереді.

Бастағанға дейін

  1. Шығарылым ескертпелерін оқыңыз. Қызмет көрсету терезесін қажет ететін шығарылым оны болжаммен бірге айтады; шығарылым сайын бірден көп емес.
  2. Қалпына келтіру жаттығуын жүргіңіз немесе осы шығарылым үшін ол сәтті өткенін растаңыз (backup-restore.md). Сәтсіз жаттығу жаңартуды бөгейді.
  3. Негізгі сақтық көшірме жасаңыз: docker compose -f docker/compose.yaml --profile backup run --rm backup.

Docker Compose, бір хост

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

Реті ойластырылған:

  1. Алдымен миграция, ескі шығарылым трафикті қызмет етіп тұрғанда. Expand миграциялар оның көзіне көрінбейді.
  2. Келесі — веб-деңгей. SIGTERM келгенде әр web процессі /readyz параметрін draining күйіне ауыстырады, ағып жатқан сұраныстарды 30 секунд ішінде аяқтайды, ағындарды қайта қосылу кеңесімен жабады және шығады. stop_grace_period 40 секунд, сондықтан Compose сау drain-ді ешқашан үзбейді.
  3. Соңында worker-лер, сондықтан ең жаңа оқиға пішімі ең жаңа тұтынушы оны күтпейінде шығарылады. Worker-лер бірден түсуді тоқтатады және 120 секунд алады; бітпейтін жұмыс басқа жерде қайта алынады, бұл қауіпсіз, өйткені әр жұмыс идемпотентті. Scheduler келесі тактісінде басшылықты береді.

Бір хостта Compose әр контейнерді кезекпен ауыстырады, сондықтан әр қызметте қысқа үзіліс болады. Мүлдем үзіліс болмасын десеңіз, веб-деңгейді өз прокси артында екі контейнер ретінде жүргізіңіз (жарияланған порты жоқ екінші web қызметін қосатын override файлымен) және оларды бір-бірден қайта құрып, келесісіне дейін әрқайсысының сагдылық туралы хабарлауын күтіңіз.

Бірнеше хост немесе оркестратор

Сол ретті пайдаланыңыз: бір жұмыстан бір рет миграция жасаңыз, содан кейін веб-деңгейді surge one және unavailable zero-пен аударыңыз, одан кейін worker-лерді. Дайындық сынақтарын /readyz-ге, ал тірілік сынақтарын /healthz-ке бағыттаңыз.

Жеке берілген tenant дерекқорларымен migrate қадамы екеуін де істейді: алдымен басқару дерекқорын миграциялайды, содан кейін ops.tenant_database тізіміндегі әр дерекқорды бір-бірден, әрқайсысы өз блогының астында. Бір tenant дерекқорындағы сәтсіздік қалғанын тоқтатпайды. Барлық дерекқор біткенде, миграциялық журналдарды салыстырады және әр дерекқор басқару дерекқоры істеген миграцияларды дәл солай істемесе, нөлден басқа шығады, артта немесе алда тұрған әрқайсысын атап. Сол команда кезек кестелерін әр дерекқорға орнатады, өйткені worker tenant-тың жұмыстарын жазылған жерінде тұтынады.

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

әр жеке дерекқор ол тіркелген атау арқылы қолжетімді болады. env:QUIRE_DB_NORTHWIND_URL ретінде тіркелген дерекқорға мына керек:

Айнымалы Неге қолданылады
QUIRE_DB_NORTHWIND_URL Қолданба рөлі, веб-деңгей мен worker үшін
QUIRE_DB_NORTHWIND_URL_MIGRATOR Мигратор рөлі, осы команда мен көшірмелер үшін
QUIRE_DB_NORTHWIND_URL_SUPERUSER Қалаған: миграцияға дейін бастапқыны (рөлдер, схемалар, көмекшілер) қайта қолданады

_MIGRATOR байланысы жоқ тіркелген дерекқор сәтсіздік ретінде хабарланады, ешқашан өткізілмейді. Веб-деңгей басқару дерекқоры біткен соң аударыла алады. Бір сағатқа артта қалған tenant дерекқоры ескертеді; бір күнге артта қалса — хабарлама жібереді.

pgvector

0264 миграциясынан бастап grounding корпусы серверде кеңейтім болса pgvector HNSW индексін пайдаланады; Compose-дің postgres қызметі олмен бірге құрастырылған (docker/postgres.Dockerfile). Бейнелер ауысқаннан кейінгі алғашқы migrate кеңейтімді superuser бастауы арқылы қосады, содан кейін 0264 жасалған векторлық бағанды қосып, индекс құрады. Бағанды қосу app.ai_chunk кестесін бір рет бөгелген жазу астында қайта жазады, сондықтан grounding сұраныстары оны күтеді; басқа еш нәрсе сол кестеге тимейді.

pgvector-і жоқ серверде 0264 ескертпе жазып, ештеңе өзгертпейді, және іздеу нақты күйінде қалады. 0.8-ден ескі pgvector-де баған мен индекс құрылады, бірақ іздеу кеңейтім жаңартылғанға дейін (alter extension vector update) нақты күйінде қалады, өйткені сүзілген HNSW сканерлеулері 0.8-дің iterative сканерлеулерін қажет етеді. Оны кейін ондай серверде қосу үшін кеңейтімді орнатыңыз, бастауды қайта жүргіңіз (немесе superuser ретінде create extension vector), содан кейін quire_migrator ретінде:

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

Ол идемпотентті және enabled немесе unavailable қайтарады. Оны әр жеке tenant дерекқорында да жүргізіңіз.

Кері қайтару

Кодты кері қайтару әрқашан қолжетімді: QUIRE_RELEASE параметрін алдыңғы тегке қойып, қайта up -d жүргіңіз. Бұл жұмыс істейді, өйткені схема шығарылым аясында екі бағытта да үйлесімді.

Схеманы кері қайтару ұсынылмайды. Болдырмау мүмкін емес нәрсе және одан қалпына келтіру жолы:

Кері айналмайды Қалпына келтіру
Бағанды алып тастаған contract миграциясы Алуға дейінгі уақытқа дейін кері қалпына келтіру жаңа дерекқорға, шығару, біріктіру
Орындағы деректер өзгерісі Солай, содан кейін содан бергі жазбаларды үйлестіру
Жіберілген webhook-тар мен оқиғалар Қалпына келтіруші оқиғалар, ешқашан жою
Жіберілген хат Адам қадағалау хабарламасын жазады
Аудит хэш тізбегі Ешқашан қайта жазылмайды; түзету жазбасын қосыңыз

Сондықтан contract миграциясы жалғыз өзі шығады: содан кейін қалпына келтірудің таза шекарасы болады.

Жаңартуды тексеру

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
Навигация

Іздеу үшін теріңіз…

↑↓ шарлау↵ таңдауEsc жабу