콘텐츠로 이동

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가 읽지 못할 수 있음.

운영 기준:

  1. upgrade 전 RDB/AOF 백업을 별도 보관함.
  2. upgrade 직후 생성된 RDB/AOF를 rollback용으로 가정하지 않음.
  3. downgrade rollback이 필요한 경우 upgrade 전 백업을 기준으로 복구함.
  4. 캐시 전용 Redis는 필요 시 데이터 폐기 후 재기동하는 rollback 경로를 문서화함.
  5. 세션/상태 저장 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 동작이 비정상임

롤백은 다음 중 하나로 수행함.

  1. 이전 패키지 버전으로 downgrade함.
  2. 이전 서버 snapshot으로 복원함.
  3. 이전 Redis 노드 또는 replica를 승격함.
  4. 백업한 RDB/AOF와 설정 파일을 사용해 복구함.
  5. 캐시 전용 Redis인 경우 데이터 폐기 후 이전 버전으로 재기동함.

운영 서버에서는 rollback 경로가 없는 Redis major upgrade를 수행하지 않음.