Redis 지속성 관리

RedisBeginner
지금 연습하기

소개

이 랩에서는 Redis 지속성 관리, 특히 데이터 내구성 구성 및 관리 방법에 대해 살펴봅니다. Redis 데이터베이스 (RDB) 지속성을 CONFIG SET 명령을 사용하여 구성하는 것부터 시작합니다. 이 명령을 통해 Redis 데이터의 시점 스냅샷을 생성할 수 있습니다. 또한 Append-Only File(AOF) 지속성 활성화, 데이터 수동 저장, 마지막 저장 시간 확인, AOF 파일 재작성을 통한 크기 최적화에 대해서도 다룹니다.

RDB 지속성 구성

이 단계에서는 Redis 데이터베이스 (RDB) 지속성을 구성합니다. RDB 는 지정된 간격으로 데이터셋의 시점 스냅샷을 생성합니다. CONFIG SET 명령을 사용하여 서버를 다시 시작하지 않고 Redis 서버 구성을 동적으로 수정합니다.

먼저 Redis 명령줄 인터페이스 (redis-cli) 를 사용하여 Redis 서버에 연결합니다. 터미널을 열고 다음 명령을 실행합니다.

redis-cli

redis-cli 프롬프트가 표시되며, 이는 127.0.0.1:6379>와 같이 보입니다.

CONFIG GET 명령을 사용하여 현재 RDB 저장 구성을 확인해 보겠습니다.

CONFIG GET save

기본 출력은 여러 저장 지점을 보여줍니다.

1) "save"
2) "900 1 300 10 60 10000"

이는 Redis 가 900 초 동안 최소 1 개의 키가 변경되었거나, 300 초 동안 최소 10 개의 키가 변경되었거나, 60 초 동안 최소 10000 개의 키가 변경된 경우 데이터베이스를 저장한다는 것을 의미합니다.

이제 이를 단일 저장 지점으로 수정해 보겠습니다. 즉, 60 초 동안 최소 1 개의 키가 변경된 경우 데이터베이스를 저장합니다.

CONFIG SET save "60 1"

변경 사항을 확인하는 OK라는 출력이 표시되어야 합니다.

OK

구성이 업데이트되었는지 확인합니다.

CONFIG GET save

출력은 이제 새로운 설정을 반영해야 합니다.

1) "save"
2) "60 1"

다음으로 Redis 가 RDB 파일 (dump.rdb) 을 저장하는 디렉토리를 구성합니다. 먼저 일부 쉘 명령을 실행하기 위해 redis-cli를 종료합니다.

exit

이제 새 디렉토리를 만들고 올바른 권한을 설정합니다. Redis 서버는 redis 사용자로 실행되므로 파일을 쓰려면 디렉토리 소유권이 필요합니다.

sudo mkdir -p /var/lib/redis/labex_data
sudo chown redis:redis /var/lib/redis/labex_data

Redis 에 다시 연결하고 dir 구성을 새 경로로 설정합니다.

redis-cli
CONFIG SET dir /var/lib/redis/labex_data

OK가 표시되어야 합니다. 변경 사항을 확인합니다.

CONFIG GET dir

출력은 새 디렉토리를 확인합니다.

1) "dir"
2) "/var/lib/redis/labex_data"

이제 Redis 는 지속성 파일을 /var/lib/redis/labex_data 디렉토리에 저장합니다.

진행 상황이 올바르게 저장되고 확인되었는지 확인하려면 redis-cli 세션을 종료하십시오.

exit

AOF 지속성 활성화

이 단계에서는 Append-Only File(AOF) 지속성을 활성화합니다. AOF 는 서버에서 수신한 모든 쓰기 작업을 기록합니다. 이는 데이터가 로그에 더 자주 기록되므로 RDB 보다 더 나은 내구성을 제공합니다.

먼저 Redis 서버에 연결합니다.

redis-cli

CONFIG GET 명령을 사용하여 AOF 가 현재 활성화되어 있는지 확인합니다.

CONFIG GET appendonly

기본적으로 비활성화되어 있습니다.

1) "appendonly"
2) "no"

AOF 를 활성화하려면 appendonly 매개변수를 yes로 설정합니다.

CONFIG SET appendonly yes

OK라는 출력이 표시됩니다. 이제 변경 사항을 확인합니다.

CONFIG GET appendonly

출력은 AOF 가 이제 활성화되었음을 확인해야 합니다.

1) "appendonly"
2) "yes"

AOF 가 활성화되면 Redis 는 이전 단계 (/var/lib/redis/labex_data) 에서 구성한 디렉토리에 있는 appendonly.aof 파일에 모든 쓰기 명령을 기록합니다.

AOF 작동을 확인하기 위해 데이터를 추가해 보겠습니다. 이 SET 명령은 AOF 파일에 기록됩니다.

SET mykey "myvalue"

다음과 같은 출력이 표시되어야 합니다.

OK

진행 상황이 올바르게 저장되고 확인되었는지 확인하려면 redis-cli 세션을 종료하십시오.

exit

SAVE 명령으로 데이터 수동 저장

이 단계에서는 SAVE 명령을 사용하여 RDB 스냅샷을 수동으로 트리거하는 방법을 배웁니다. Redis 는 구성에 따라 데이터를 자동으로 저장하지만, 백업을 생성하거나 계획된 유지 관리 이벤트 전에 데이터가 지속되도록 하려면 수동 저장이 유용합니다.

먼저 Redis 서버에 연결합니다.

redis-cli

저장할 데이터가 있도록 새 데이터를 추가해 보겠습니다.

SET anotherkey "anothervalue"

다음과 같은 출력이 표시되어야 합니다.

OK

이제 SAVE 명령을 사용하여 디스크에 수동으로 저장합니다.

SAVE

SAVE 명령은 동기식 저장을 수행합니다. 즉, 저장 작업이 완료될 때까지 다른 모든 클라이언트 요청을 차단합니다. 대규모 데이터베이스의 경우 눈에 띄는 지연을 유발할 수 있습니다.

저장이 완료되면 OK가 표시됩니다.

OK

이는 Redis 가 현재 데이터셋을 /var/lib/redis/labex_data 디렉토리에 있는 dump.rdb 파일에 성공적으로 기록했음을 확인합니다. 프로덕션 환경에서는 비차단 BGSAVE 명령이 일반적으로 선호됩니다.

진행 상황이 올바르게 저장되고 확인되었는지 확인하려면 redis-cli 세션을 종료하십시오.

exit

LASTSAVE 명령으로 마지막 저장 시간 확인

이 단계에서는 LASTSAVE 명령을 사용하여 마지막으로 성공한 RDB 저장 시간 스탬프를 확인합니다. 이 명령은 지속성 전략이 예상대로 작동하는지 모니터링하고 확인하는 데 유용합니다.

먼저 Redis 서버에 연결합니다.

redis-cli

마지막으로 성공한 저장 시간 스탬프를 얻으려면 LASTSAVE 명령을 실행합니다.

LASTSAVE

이 명령은 Unix 타임스탬프를 반환합니다. 이는 1970 년 1 월 1 일 (UTC) 이후 경과된 초 수를 나타냅니다. 출력은 다음과 유사하게 표시되지만, 숫자는 사용자마다 다를 것입니다.

(integer) 1678886400

이 타임스탬프는 이전 단계에서 SAVE 명령을 실행한 시간을 나타냅니다.

시간 스탬프가 업데이트되는 것을 살펴보겠습니다. 더 많은 데이터를 추가하고, 다른 수동 저장을 수행한 다음, 마지막 저장 시간을 다시 확인하겠습니다.

SET anotherkey2 "anothervalue2"
SAVE
LASTSAVE

이 명령들을 실행한 후, 두 번째 LASTSAVE 명령에서 더 최근의 새로운 타임스탬프가 반환되는 것을 볼 수 있으며, 이는 새 스냅샷이 생성되었음을 확인합니다.

진행 상황이 올바르게 저장되고 확인되었는지 확인하려면 redis-cli 세션을 종료하십시오.

exit

BGREWRITEAOF 명령으로 AOF 재작성

이 단계에서는 BGREWRITEAOF 명령을 사용하여 AOF 파일을 다시 작성하는 방법을 배웁니다. 애플리케이션이 실행됨에 따라 AOF 파일은 점점 더 커집니다. 많은 중복 명령 (예: 카운터를 여러 번 증가시키는 것) 을 포함할 수 있습니다. AOF 파일을 다시 작성하면 현재 데이터셋을 재구성하는 데 필요한 최소한의 명령으로 새롭고 압축된 파일을 생성하여 Redis 시작 시간을 크게 개선할 수 있습니다.

먼저 Redis 서버에 연결합니다.

redis-cli

다시 작성의 효과를 보여주기 위해 AOF 로그에 불필요한 명령을 추가하는 몇 가지 작업을 수행해 보겠습니다.

SET key1 "value1"
SET key2 "value2"
DEL key1
SET key3 "value3"

AOF 파일에는 이제 네 개의 명령이 포함되어 있습니다. 그러나 현재 상태를 다시 빌드하려면 key2key3만 설정하면 됩니다. key1과 관련된 명령은 중복됩니다.

이제 AOF 파일의 백그라운드 다시 작성을 트리거합니다.

BGREWRITEAOF

프로세스가 시작되었음을 확인하는 메시지가 표시됩니다.

Background append only file rewriting started

Redis 는 이 작업을 백그라운드에서 수행하므로 클라이언트 요청을 차단하지 않습니다. 임시 AOF 파일을 생성하고, 현재 데이터셋을 가장 효율적인 방식으로 기록한 다음, 이전 AOF 파일을 새 파일로 원자적으로 교체합니다.

다시 작성 작업이 완료되면 appendonly.aof 파일이 더 작아지고 key2key3를 설정하는 명령만 포함하게 됩니다.

진행 상황이 올바르게 저장되고 확인되었는지 확인하려면 redis-cli 세션을 종료하십시오.

exit

요약

이 실습에서는 Redis 지속성 관리의 기본 사항을 배웠습니다. CONFIG SET을 사용하여 RDB 및 AOF 지속성 메커니즘을 모두 구성하는 연습을 했습니다. 또한 SAVE 명령으로 수동 데이터 저장을 수행하고, LASTSAVE로 마지막 저장 시간을 확인하고, BGREWRITEAOF로 AOF 파일을 최적화하는 방법을 배웠습니다. 이러한 기술은 데이터 내구성을 보장하고 건강한 Redis 인스턴스를 유지하는 데 필수적입니다.