레이블이 aof인 게시물을 표시합니다. 모든 게시물 표시
레이블이 aof인 게시물을 표시합니다. 모든 게시물 표시

redis aof, rdb 백업 비활성화 하기

# k8s redis-cluster 운영 중 liveness, readiness probe 가 가끔 실패한다.
# redis pod 내의 로그를 보면 백업이 수행 기록이 남아 있다.

Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
10 changes in 300 seconds. Saving...
Background saving started by pid 31442
DB saved on disk
RDB: 0 MB of memory used by copy-on-write
Background saving terminated with success


# RDB(현재 메모리의 전체 내용을 dump.rdb 바이너리 파일로 백업, AOF 보다 파일이 사이즈가 작고 빠름)
# AOF(append only file, redis 명령 실행 마다 파일로 백업)
# 백업으로 느려 질 수 있어 백업을 비활성한다.

# k8s pod 에서 redis-cli 접속
kubectl -n redis-cluster exec -it redis-cluster-0 -- redis-cli -h 127.0.0.1 -p 6379 -c -a "mypassword"

# redis RDB 백업 활성화 여부 확인
127.0.0.1:6379> config get save
1) "save"
2) "900 1 300 10 60 10000"

# redis AOF 백업 활성화 여부 확인
# 참고로 config get *  또는 config get aaa* 로 와이드카드도 사용할 수 있다.
127.0.0.1:6379> config get appendonly*
1) "appendonly"
2) "yes"

# redis 노드 하나 재시작 없이 AOF 비활성화
127.0.0.1:6379> config set appendonly no
OK
127.0.0.1:6379> config get appendonly
1) "appendonly"
2) "no"

# redis 노드 하나 재시작 없이 RDB 비활성화
127.0.0.1:6379> config set save ""
OK
127.0.0.1:6379> config get save
1) "save"
2) ""

# 위 방식은 redis 인스턴스(pod)마다 접속해서 수행야 한다.
# 따라서 다음과 같은 스크립트를 실행하는게 편한다.
for i in $(kubectl get pod -n redis-cluster | awk '{print $1}' | grep -v NAME); do
    echo $i;
    # AOF 비활성화
    kubectl -n redis-cluster exec -it $i -- redis-cli -h 127.0.0.1 -p 6379 -c -a "mypassword" config set appendonly no
    # RDB 비활성화
    kubectl -n redis-cluster exec -it $i -- redis-cli -h 127.0.0.1 -p 6379 -c -a "mypassword" config set save ""
    # 확인
    kubectl -n redis-cluster exec -it $i -- redis-cli -h 127.0.0.1 -p 6379 -c -a "mypassword" config get appendonly
    kubectl -n redis-cluster exec -it $i -- redis-cli -h 127.0.0.1 -p 6379 -c -a "mypassword" config get save
done


# 또는 redis.conf 에 다음과 같이 설정해 적용한다.
appendonly no
save ""



#####


# redis-cli 대신 GUI 클라이언트를 사용하면 편하다.

# brew 로 바로 설치할 수있다.
brew install another-redis-desktop-manager