gendesign/ops
bot-backend 8a5d323608
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 11s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
fix(ops): восстановление не падает в хвосте из-за незаведённых ролей
Дамп backup.sh — это одна база, а роли живут в кластере и уезжают соседним
файлом gendesign_globals_<ts>.sql.gz. Сам дамп на эти роли ссылается: OWNER TO
и GRANT. psql здесь идёт с ON_ERROR_STOP=1, поэтому на кластере, где ролей ещё
нет, восстановление обрывается на первом же таком операторе — но данные к тому
моменту уже залиты и закоммичены, в одну транзакцию psql дамп не оборачивает.
Итог: наполовину собранная база и невнятная ошибка в самом конце, после всей
работы.

Ровно этот путь и нужен при переезде: на новом хосте кластер пустой, ролей нет.

Теперь соседний globals подхватывается автоматически и грузится первым — так
уже давно устроен ops/restore-drill.sh, разошлись только эти два скрипта.
Правило имени взято оттуда же.

Побочный эффект назван в шапке прямо: globals несёт пароли ролей на момент
снятия дампа, и если пароль меняли после, он вернётся к старому. Для поднятия
кластера с нуля это правильное поведение, для точечного отката данных в живой
базе — нет, поэтому есть RESTORE_SKIP_GLOBALS=1 и RESTORE_GLOBALS_FILE.

Сам globals грузится БЕЗ ON_ERROR_STOP: на живом кластере роли уже есть и
CREATE ROLE для каждой законно падает с already exists. Значимая часть — идущие
следом ALTER ROLE, они отрабатывают.

Если соседа нет и он не отключён явно — печатаем предупреждение ДО заливки,
чтобы «упадёт через час» не стало сюрпризом. Не падаем: на живом кластере роли
на месте и всё пройдёт как раньше.

Проверено: bash -n; ветка автоопределения прогнана на паре файлов с реальными
именами — сосед находится. Поведение на живом кластере не меняется: globals
идёт первым, дальше всё как было.

Refs #3057
2026-08-25 08:18:16 +03:00
..
db-bootstrap feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
glitchtip-auth-forwarder fix(tradein/observability): stop basic_auth 401 and RetryError GlitchTip noise 2026-08-15 18:08:04 +03:00
backup-forgejo.sh feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
backup.sh fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
check-backup-staleness.sh fix(ops): restore +x on new ops/*.sh (exec bit lost in prior commit, Windows core.filemode=false) 2026-08-21 15:38:31 +03:00
crontab-beget.cron chore(ops): развести crontab по хостам под переезд (#3072) 2026-08-24 02:04:40 +00:00
crontab-poincare.cron fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
docker-prune.sh chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
gendesign-backup-forgejo.default.example feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
gendesign-backup.default.example fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
gendesign-uptime.default.example ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00
journald-gendesign.conf.example chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
lib-backup.sh fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
restore-drill.sh fix(ops): бэкап без выгрузки в S3 падает, а не рапортует успех (#3086) 2026-08-24 17:50:18 +00:00
restore.sh fix(ops): восстановление не падает в хвосте из-за незаведённых ролей 2026-08-25 08:18:16 +03:00
selectel-audit.sh feat(ci): деплой проверяет, к тому ли хосту подключился (#3079) 2026-08-24 16:36:50 +00:00
selectel-bootstrap.sh fix(ops): закрепить рабочий адрес api.telegram.org на новом хосте 2026-08-23 23:32:35 +03:00
selectel-ci-access.sh feat(ci): деплой проверяет, к тому ли хосту подключился (#3079) 2026-08-24 16:36:50 +00:00
split-infra-postgres.sh feat(ops): лёгкий Postgres на Beget под forgejo и glitchtip (#3080) 2026-08-24 16:31:12 +00:00
uptime-healthcheck.sh ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00