2022-02-02

0202 레디스 data persistence

 1. 레디스는 인메모리 데이터 베이스

2. NoSQL의 일종. key-value스토어

3. java언어로 되어있다

4. 빠르다

5. 인메모리이기 때문에 데이터 유실이 발생할 수 있다 < 실험

6. 데이터를 넣은후 - 갑자기 어떤이유로 프로세스 종료 (kill -9해서 실험) . 다시 client로 접속해서 확인해보니 넣었던 데이터가 없어져 있다.

근데 이전에 넣었던 데이터는 유실되지 않고 있었다. 

어떤경우에는 디스크에 저장하고 어떤경우에는 유실되는 건지? 그렇다면 이 유실을 방지하기 위한 레디스의 data persistence전략은 어떤것일지?

---

레디스 data persistence전략

1. RDB 

1) 데이터 스냅샷을 일정 주기로 rdb에 저장한다. 

2) 스냅샷을 찍어 저장할뿐이므로 과부하가 적다(성능 good)

3) 일정 주기적으로 저장되므로 데이터 유실이 있을 수 있다.

2. AOF 

1) append only file

2) redis에서 실행한 커맨드를 전부 append only로 기록한다

3) 데이터 유실이 없다 

4) 동기화 정책에 따라서 성능저하가 있을 수 있다 (매번 똑같은 커맨드 기록)

5) 유연성이 있다. 이를 테면 flushall를 하면 그 커맨드도 물론 기록되는데. 다시 데이터 찾아올때는 파일에서 해당 커맨드 삭제하고 찾아온다던지 .

3. 하이브리드

위 두 전략을 함께 가져간다.

--- 

1. 레디스 rdb data.dmp전략

- redis.conf에서 어디에 rdb덤프 파일 존재하는지 경로 확인

- save 30 1 => 1개 데이터 업데이트 시 30초간격으로 데이터 덤프스냅샷뜬다

- 해당 주기를 조절하여 얼만큼 주기로 스냅샷 찍을건지 결정할 수 있음

- 여기에 dump되어 데이터가 들어가면. 갑자기 레디스 죽더라도 다시 client로 들어가 확인해보았을때 데이터 유실없이 들어가 있는 것을 확인할 수 있음



레디스를 재시작할때 db파일에서 데이터를 읽어오는 것을 로그를 통해서 확인해볼 수 있다

2. --pipe메서드로 대량의 데이터를 한꺼번에 넣을 수 있다

- awk를 활용한다. 

3. 레디스 한글 깨질경우

- 원래는 utf-8로 인코딩하지만 한글그대로의 데이터를 보고싶을때 : redis-cli --raw옵션사용한다. 

4. 레디스 appendonlyfile전략

- 기본적으로 second단위로 저장. 그러므로 최대 유실가능한 데이터는 1세컨드 안에서 행해진 명령어의 데이터라고 할 수 있다

- dir 은 기본적으로 rdb와 같은위치

- appendonly를 yes로 수정한후 테스트 확인해볼수있다

- 이 aof파일의 명령어를 수정해서 원하는 데이터로만 원복이 가능하다



append only file로부터 데이터를 불러들여와 start하는 것을 확인할 수 있다. 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...