English {#english}
Rollback from v16 to v15 on upgrade failure or compatibility issues. Scope: prego-docker (v15 image), MariaDB 10.11→10.6 if needed, Redis 7-alpine, Ansible frappe_version=version-15. Ref: frappe-v15-to-v16-upgrade-plan Phase 4.4. Full details: see Korean section below.
한국어 {#korean}
Runbook: Frappe v16 → v15 롤백
목적: v16 업그레이드 실패 또는 호환성 이슈 시 v15 스택으로 복귀하는 절차.
Ref: frappe-v15-to-v16-upgrade-plan Phase 4.4.
1. 롤백 범위
| 컴포넌트 | v16 → v15 복귀 |
|---|---|
| prego-docker | iamfork/prego-repo v15 태그 이미지 (또는 frappe/bench:latest + bench init v15) |
| MariaDB | 10.11 → 10.6 (기존 10.6 인스턴스 유지 시 DB 변경 없음) |
| Redis | 7-alpine 유지 (v15 호환) |
| Ansible | frappe_version=version-15, mariadb_image=mariadb:10.6 |
2. 사전 조건
| 항목 | 확인 |
|---|---|
| v15 이미지 | iamfork/prego-repo에 v15 태그가 있거나, v15용 apps.json으로 재빌드된 이미지. |
| DB | v16에서 마이그레이션된 사이트는 v15와 스키마 불일치 가능. 신규 v16 사이트만 생성했다면 DB 롤백 불필요. 기존 v15 사이트를 v16으로 올렸다면 bench migrate 역방향은 지원되지 않음 — DB 백업에서 복원 필요. |
| 백업 | R2·로컬에 v16 전환 이전 덤프 보관. |
3. App 이미지 롤백
3.1 인벤토리·변수 변경
# prego_nodes group_vars 또는 host_varsfrappe_bench_image: iamfork/prego-repo:v15-last # v15 태그 또는 digestfrappe_version: version-153.2 Ansible 재배포
ansible-playbook -i inventory.yml playbook.yml --limit prego_nodes- 기존 bench 데이터(
/var/lib/frappe-bench)가 v16 앱을 포함한 상태. v15 이미지로 컨테이너만 교체 시 앱 버전 불일치 발생 가능. - 권장: bench 데이터를 v15 시점 백업에서 복원하거나, 깨끗이 제거 후 재설치. ansible-clean-and-reinstall.md 참조.
4. DB 롤백 (MariaDB 10.11 → 10.6)
v16에서 MariaDB 10.11로 마이그레이션했다면:
- 10.11 덤프 생성.
- 10.6 인스턴스에 덤프 복원. (10.11 → 10.6 하위 호환 일반적이나, 시스템 테이블 차이 시 검증 필요.)
- App의
db_host를 10.6 서버로 변경.
5. Ansible 변수 롤백
| 역할 | 롤백 값 |
|---|---|
| mariadb_server | mariadb_image: mariadb:10.6 |
| frappe_bench | frappe_bench_image: frappe/bench:latest 또는 v15 커스텀 이미지, frappe_version: version-15 |
| redis_server | redis_version: "7" 또는 "7-alpine" (v15에서도 호환) |
6. 검증
-
bench --site SITE_NAME list-apps— frappe, erpnext, hrms 등 v15 브랜치 확인. - 로그인·API·Stripe 웹훅 동작.
-
SELECT VERSION()— MariaDB 10.6.x 확인.