Skip to content

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 덤프 생성

Terminal window
# 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.gz
  • DB_HOST: 기존 MariaDB 10.6 호스트.
  • R2 백업이 최신이면 해당 파일 사용 가능.

2.2 새 DB 서버에 10.11 기동

Ansible으로 새 DB 서버 배포 (mariadb_server role, mariadb_image: mariadb:10.11):

Terminal window
ansible-playbook -i inventory.yml playbook.yml --limit prego_db_servers \
-e db_root_password=NEW_ROOT_PASSWORD

또는 기존 DB 서버에서 10.6 컨테이너 중지 후 10.11로 교체:

Terminal window
docker stop prego-mariadb
docker rm prego-mariadb
# mariadb_data 볼륨은 유지. 10.11로 새 컨테이너 기동 시 데이터 호환성 확인 필요.

주의: 10.6 데이터 디렉터리를 10.11이 그대로 마운트해 사용할 수 있는지 확인. 호환 가능하나 공식 권장은 덤프/복원.

2.3 덤프 복원

Terminal window
gunzip -c /tmp/mariadb_10.6_dump_YYYYMMDD.sql.gz | mysql -h NEW_DB_HOST -u root -p

2.4 App 서버 연결 변경

  • 인벤토리 db_host를 새 DB 서버 IP로 변경.
  • common_site_config.jsondb_host 등이 Ansible에서 자동 반영되는지 확인.
  • App 컨테이너 재시작: docker restart prego-frappe-bench

2.5 검증

Terminal window
# App에서
bench --site SITE_NAME mariadb
# SQL: SELECT VERSION(); -- 10.11.x 확인

3. 방법 B — In-Place 업그레이드 (단일 호스트)

기존 10.6 컨테이너 데이터를 백업한 뒤, 10.11 이미지로 교체.

Terminal window
# 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-mariadb
docker 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. 롤백

실패 시:

  1. App의 db_host를 기존 10.6 서버로 복원.
  2. 10.11 컨테이너 중지·삭제.
  3. 10.6 덤프를 10.6 인스턴스에 복원 (필요 시).
  4. frappe-v16-rollback 참조.
Help