Database

Redis에서 데이터 영구 보존: 스냅샷과 AOF로 안전한 복구 시스템 구축

백엔드 유성 2023. 8. 4. 20:05

Redis는 메모리 기반 데이터베이스입니다. 하지만 데이터 소멸의 문제를 피하기 위해 영속성 기능을 제공합니다.

 

Redis는 두가지 전략을 같이 사용하며 데이터를 Disk에 영속화 합니다.

 

1. 스냅샷(Snapshot) 방식

 Redis는 주기적으로 또는 변경 사항이 있을 때마다 데이터를 스냅샷 파일(.rdb)로 저장합니다.  .rdb 파일은 Redis Database의 약자로 바이너리 형식이며 Redis 서버가 재시작될 때 또는 데이터를 복구할 때 사용합니다.

 

또한, Redis 스냅샷은 Redis 저장소 전체를 스냅샷하는 방법입니다. 스냅샷은 Redis 서버의 현재 상태를 모두 포함하는 것으로, 메모리에 있는 모든 데이터를 디스크에 저장합니다. 스냅샷은 Redis 데이터베이스의 모든 키-값 쌍을 포함하여 데이터를 영속화하는데 사용됩니다.

 

스냅샷 방식은 데이터를 쉽게 백업하고, Redis 서버를 빠르게 시작할 수 있도록 도와주는 장점이 있습니다. 하지만 스냅샷을 생성하는 동안 Redis 서버의 성능에 영향을 미치는 단점도 있으므로, 스냅샷 주기를 적절히 조정하여 데이터 안정성과 서버 성능을 균형있게 관리하는 것이 중요합니다.

 

2. Append Only File(AOF) 방식

AOF 방식은 Redis가 수행하는 모든 쓰기 작업을 로그 형식으로 기록하는 방식입니다. Redis는 모든 쓰기 명령을 AOF 파일에 기록하여 데이터를 영속화합니다. 이러한 로그는 Redis가 재시작될 때 데이터를 복구하는데 사용됩니다. AOF 파일은 텍스트 형식으로 기록되어 있어 사람이 읽을 수 있으며, Redis가 생성한 쓰기 로그도 인간 친화적인 형식으로 기록되어 디버깅 및 분석에 용이합니다.

AOF 방식은 주로 데이터의 크기가 작거나 변경이 자주 일어나는 경우에 적합합니다. 스냅샷 방식보다는 성능에 더 큰 영향을 주지 않고 데이터를 안정적으로 보존할 수 있습니다. 또한 AOF 파일은 스냅샷 파일과 함께 사용하여 데이터 손실을 최소화할 수 있습니다.

AOF 방식은 데이터 변경 이력을 로그로 저장하여 최근 상태를 정확하게 보존하므로, 장애 발생 시 더 정확한 데이터 복구가 가능합니다. 따라서 AOF 방식을 사용하여 데이터 안정성과 가용성을 더욱 강화할 수 있습니다.

 

3. 복구 시스템

Redis는 위에서 설명한 스냅샷 방식과 AOF 방식을 조합하여 데이터 손실을 최소화하고 데이터를 안정적으로 보호하는 것이 좋습니다. 스냅샷 방식은 주기적으로 사용하고, AOF 방식은 더 자주 사용하는 것이 일반적입니다. Redis가 비정상적으로 종료될 경우, Redis 서버가 시작될 때 스냅샷과 AOF 파일을 사용하여 데이터를 복구할 수 있습니다.

영속성 기능은 Redis의 신뢰성을 높이고 데이터 손실을 방지하는데 중요한 역할을 합니다. 따라서 Redis를 운영할 때는 적절한 영속성 설정을 고려하여 데이터를 안전하게 관리하는 것이 좋습니다.