Redis 업그레이드 및 롤백¶
Redis 업그레이드 전후 확인, 백업, 롤백 기준을 정리함.
1. 업그레이드 및 롤백 기준¶
Redis 업그레이드는 단순 패키지 업데이트로 처리하지 않음. 운영 서버에서는 다음 순서를 따름.
1.1 업그레이드 전 확인¶
redis-server -v
rpm -qi redis
redis-cli --askpass INFO server
redis-cli --askpass INFO persistence
redis-cli --askpass INFO replication
확인할 항목:
- 현재 Redis major/minor 버전
- 패키지 출처
- 설정 파일 경로
- persistence 사용 여부
- AOF/RDB 파일 위치
- replica/Sentinel/Cluster 구성 여부
- 애플리케이션 Redis client library 호환성
- rollback 가능 여부
1.2 업그레이드 전 백업¶
redis-cli --askpass BGSAVE
redis-cli --askpass INFO persistence
설정 파일을 백업함.
REDIS_CONF="$(
rpm -ql redis \
| grep -E '/(redis\.conf|redis/redis\.conf)$' \
| head -n 1
)"
sudo cp -a "$REDIS_CONF" "${REDIS_CONF}.before-upgrade.$(date +%Y%m%d%H%M%S).bak"
data directory도 필요 시 백업함.
redis-cli --askpass CONFIG GET dir
1.3 RDB/AOF 호환성 확인¶
Redis major/minor upgrade 후 생성된 RDB/AOF를 이전 버전 Redis가 읽지 못할 수 있음.
운영 기준:
- upgrade 전 RDB/AOF 백업을 별도 보관함.
- upgrade 직후 생성된 RDB/AOF를 rollback용으로 가정하지 않음.
- downgrade rollback이 필요한 경우 upgrade 전 백업을 기준으로 복구함.
- 캐시 전용 Redis는 필요 시 데이터 폐기 후 재기동하는 rollback 경로를 문서화함.
- 세션/상태 저장 Redis는 staging에서 upgrade와 downgrade 복구 리허설을 수행함.
1.4 패키지 업데이트¶
AppStream 사용 시:
sudo dnf update redis -y
Remi module stream을 변경해야 하는 경우에는 staging에서 먼저 검증한 뒤 수행함.
sudo dnf module list redis
sudo dnf module reset redis -y
sudo dnf module enable redis:remi-8.2 -y
sudo dnf update redis -y
서비스를 재시작함.
sudo systemctl restart redis
1.5 업그레이드 후 검증¶
redis-server -v
redis-cli --askpass ping
redis-cli --askpass INFO server
redis-cli --askpass INFO persistence
redis-cli --askpass INFO memory
sudo journalctl -u redis -n 100 --no-pager
애플리케이션 로그와 Redis slowlog도 함께 확인함.
redis-cli --askpass SLOWLOG GET 10
redis-cli --askpass LATENCY DOCTOR
1.6 롤백 기준¶
다음 상황에서는 롤백을 검토함.
- Redis 서비스가 시작되지 않음
- persistence 파일을 읽지 못함
- 애플리케이션 Redis client에서 프로토콜 또는 인증 오류가 발생함
- latency가 기준치를 초과함
- memory fragmentation 또는 OOM이 발생함
- 주요 command 동작이 변경됨
- Sentinel/Cluster failover 동작이 비정상임
롤백은 다음 중 하나로 수행함.
- 이전 패키지 버전으로 downgrade함.
- 이전 서버 snapshot으로 복원함.
- 이전 Redis 노드 또는 replica를 승격함.
- 백업한 RDB/AOF와 설정 파일을 사용해 복구함.
- 캐시 전용 Redis인 경우 데이터 폐기 후 이전 버전으로 재기동함.
운영 서버에서는 rollback 경로가 없는 Redis major upgrade를 수행하지 않음.