English {#english}
Migrate MariaDB 10.6 → 10.11 for Frappe v16 upgrade. Prerequisites: backup (R2 or local), downtime, new 10.11 instance. Methods: (A) New 10.11 + restore dump (recommended); (B) In-place upgrade. Ref: frappe-v15-to-v16-upgrade-plan Phase 4. Full details: see Korean section below.
한국어 {#korean}
Runbook: MariaDB 10.6 → 10.11 마이그레이션
목적: Frappe v16 업그레이드 전제로 MariaDB 10.6에서 10.11로 전환하는 절차.
Ref: frappe-v15-to-v16-upgrade-plan Phase 4.
1. 사전 조건
| 항목 | 확인 |
|---|---|
| 백업 | R2 또는 로컬에 최신 덤프 존재. mariadb-backup-r2 |
| 다운타임 | App 서버 중지 또는 DB 연결 차단 필요. |
| 신규 DB 서버 | MariaDB 10.11 컨테이너/VM 준비. Ansible mariadb_server role은 이미 mariadb:10.11 사용. |
2. 방법 A — 새 10.11 인스턴스 + 덤프 복원 (권장)
2.1 기존 10.6 덤프 생성
# DB 서버에서 (또는 App에서 원격 접속)mysqldump -h DB_HOST -u root -p --all-databases --single-transaction --routines --triggers \ --set-gtid-purged=OFF \ | gzip > /tmp/mariadb_10.6_dump_$(date +%Y%m%d).sql.gzDB_HOST: 기존 MariaDB 10.6 호스트.- R2 백업이 최신이면 해당 파일 사용 가능.
2.2 새 DB 서버에 10.11 기동
Ansible으로 새 DB 서버 배포 (mariadb_server role, mariadb_image: mariadb:10.11):
ansible-playbook -i inventory.yml playbook.yml --limit prego_db_servers \ -e db_root_password=NEW_ROOT_PASSWORD또는 기존 DB 서버에서 10.6 컨테이너 중지 후 10.11로 교체:
docker stop prego-mariadbdocker rm prego-mariadb# mariadb_data 볼륨은 유지. 10.11로 새 컨테이너 기동 시 데이터 호환성 확인 필요.주의: 10.6 데이터 디렉터리를 10.11이 그대로 마운트해 사용할 수 있는지 확인. 호환 가능하나 공식 권장은 덤프/복원.
2.3 덤프 복원
gunzip -c /tmp/mariadb_10.6_dump_YYYYMMDD.sql.gz | mysql -h NEW_DB_HOST -u root -p2.4 App 서버 연결 변경
- 인벤토리
db_host를 새 DB 서버 IP로 변경. common_site_config.json의db_host등이 Ansible에서 자동 반영되는지 확인.- App 컨테이너 재시작:
docker restart prego-frappe-bench
2.5 검증
# App에서bench --site SITE_NAME mariadb# SQL: SELECT VERSION(); -- 10.11.x 확인3. 방법 B — In-Place 업그레이드 (단일 호스트)
기존 10.6 컨테이너 데이터를 백업한 뒤, 10.11 이미지로 교체.
# 1. 덤프docker exec prego-mariadb mysqldump -u root -pYOUR_PASSWORD --all-databases \ --single-transaction --routines --triggers | gzip > /tmp/pre_upgrade.sql.gz
# 2. 컨테이너 중지·삭제 (볼륨 유지)docker stop prego-mariadbdocker rm prego-mariadb
# 3. 10.11로 새 컨테이너 (동일 볼륨 마운트)docker run -d --name prego-mariadb \ -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD \ -v mariadb_data:/var/lib/mysql \ mariadb:10.11
# 4. 10.6 데이터가 10.11에서 정상 기동하는지 확인. 실패 시:# - 볼륨 백업 후 덤프 복원 (방법 A)- MariaDB 10.6 → 10.11 in-place는 일반적으로 호환되나, 시스템 테이블 변경 시
mysql_upgrade실행 필요할 수 있음.
4. 롤백
실패 시:
- App의
db_host를 기존 10.6 서버로 복원. - 10.11 컨테이너 중지·삭제.
- 10.6 덤프를 10.6 인스턴스에 복원 (필요 시).
- frappe-v16-rollback 참조.