DBAtlas · 데이터베이스 운영 아틀라스

Redis 백업과 복원 (RDB, AOF, replica, cluster)

Redis난이도: 중급소요 시간: 30–60분

설치된 Redis 또는 Valkey(단일 인스턴스, Sentinel을 쓰는 master/replica 또는 Redis Cluster)의 백업 체계를 구성하고 백업에서 복원하는 방법을 설명합니다. RDB(save 규칙, BGSAVE, LASTSAVE, dump.rdb 복사)와 AOF(BGREWRITEAOF, 7.x의 다중 파일 appendonlydir) 백업, replica에서의 백업, Cluster의 모든 master 백업, 임시 인스턴스에서의 테스트 복원, AOF 우선순위 함정에 빠지지 않는 제자리 복원, systemd timer / cron을 이용해 보존 기간과 원격 복사를 갖춘 예약 백업을 단계별로 수행합니다. 결과적으로 정기적으로 실행되고 복원 가능성이 검증된 백업을 얻습니다. 복제(Sentinel, Cluster)는 백업을 대신하지 않습니다. 실수로 삭제된 데이터는 모든 replica로 전파됩니다. 설치와 일상 운영은 별도의 Redis 가이드에 있습니다.

구성: 단일 인스턴스, replica 또는 Redis Cluster 서버 (Redis 7.2 / 8.x, Valkey)

시작하기 전에

  • …가 실행 중이고 구성 파일 …에 requirepass가 정의되어 있습니다(비밀번호는 이 파일에서 읽음). 설치는 DBAtlas …Redis Cluster…Redis Sentinel… 가이드의 경로로 되어 있어야 하며, 다르면 경로를 맞추십시오.
  • …가 데이터 디스크와 별개인 디스크나 네트워크 공유에 있습니다. 여유 공간은 최소 메모리 데이터 크기(used_memory)에 보존 기간을 곱한 만큼입니다. 또한 데이터 디렉터리에 BGSAVE용으로 새 RDB를 쓸 만큼의 여유 공간이 있어야 합니다.
  • BGSAVE/BGREWRITEAOF는 fork로 동작하므로 쓰기 강도에 따라(copy-on-write) 추가 메모리가 필요합니다. vm.overcommit_memory = 1이 설정되어 있어야 하며, 그렇지 않으면 fork가 "Can't save in background: fork: Cannot allocate memory"로 실패합니다.
  • 백업에 쓰는 명령(CONFIG, BGSAVE, LASTSAVE, BGREWRITEAOF…, CLUSTER, SYNC…)이 rename-command로 막혀 있지 않고, 비밀번호 소유 사용자(default)가 이 명령을 실행할 수 있습니다.
  • root 또는 sudo 권한이 있습니다. 제자리 복원을 한다면 유지보수 시간을 확보했고 애플리케이션 팀에 알렸습니다.

가이드 단계

  • 현재 영속성 설정 — 영속성과 역할 정보 확인 · RDB save 규칙 설정 · 실행 중에 AOF 켜기 · 백업 디렉터리 준비
  • RDB 백업 — Replica가 최신 상태인지 확인 · BGSAVE로 최신 RDB 받기 · dump.rdb를 백업 디렉터리에 복사하고 검증 · Cluster master 목록 확인 · 각 master에서 RDB 받기 (--rdb)
  • AOF 백업 — AOF 압축 (BGREWRITEAOF) · appendonlydir 백업 · AOF 파일 검증
  • 테스트 복원 (임시 인스턴스) — 임시 인스턴스에서 RDB 열기 · 원본과 비교하고 임시 인스턴스 종료 · 임시 인스턴스에서 AOF 백업 열기
  • 제자리 복원 — 서비스 중지와 기존 파일 옮겨 두기 · RDB 백업을 제자리에 넣기 · AOF 일시적으로 끄기 · AOF 백업을 제자리에 넣기 · 서비스 시작과 데이터 검증 · 실행 중에 AOF 다시 켜기 …
  • 예약 백업 및 보존 — 백업 스크립트 작성 · 스크립트에 실행 권한 부여 · 원격 서버 SSH 접근 준비 · systemd service와 timer 생성 · 예약 백업을 수동으로 실행하여 검증 · cron 작업 작성 …
  • 모니터링 — 영속성과 백업 경과 시간 모니터링 · 정기 복구 훈련
내 환경에 맞춘 단계별 계획 열기 →