[Redis] ‘RDB’ ํฌ๋งท์ ํ์ผ์ ๋ด์ฉ์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ
RDB ํ์ผ ํฌ๋งท์ด๋?
RDB ํฌ๋งท์ ํ์ผ์ Redis DataBase์ ์ฝ์๋ก Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉํ๋ ํ์ผ ํ์์
๋๋ค.
Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ RDB(Redis DataBase) ํ์์ ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. RDB ํ์ผ์ Redis ์๋ฒ์์ ๋ฐ์ดํฐ I/O์ ์ฌ์ฉ๋ฉ๋๋ค. RDB ํ์ผ์ Redis ๋ฐ์ดํฐ์ ๋ด๋ถ ํํ์ ์ง๋ ฌํํ์ฌ ์ ์ฅํ๋ ์ด์ง ํ์์ binary ํ์ผ์
๋๋ค.
Redis๋ RDB ํ์ผ์ ์์ฑํ์ฌ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋
์ท์ ์ ์ฅํ๊ณ , ๋์ค์ RDB ํ์ผ์ ๋ก๋ํ์ฌ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ํฉ๋๋ค.
๐ ์ด์งํ์ผ = ๋ฐ์ด๋๋ฆฌ(binary) ํ์ผ
์ด์ง ํ์ผ์ ์ปดํจํฐ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ํ์ผ ํ์์ ์๋ฏธํฉ๋๋ค. ์ด์ง ํ์ผ์ ๋ณดํต ํ ์คํธ ํ์ผ๊ณผ ๊ตฌ๋ถ๋๋๋ฐ, ํ ์คํธ ํ์ผ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด ์์ง๋ง ์ด์ง ํ์ผ์ 0๊ณผ 1์ ์ด์ง ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ด์ง ํ์ผ์ ํ๋ก๊ทธ๋จ ์ฝ๋, ์ด๋ฏธ์ง, ์ค๋์ค, ๋น๋์ค ๋ฑ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด์ง ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํธ ๋จ์๋ก ์์ฑ๋๋ฉฐ, ์ด์ง ํ์์ผ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์ด์ง ํ์ผ์ ํ ์คํธ ํ์ผ๊ณผ ๋ฌ๋ฆฌ, ๋ฐ์ดํฐ์ ๋ด์ฉ์ ์ง์ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ด์ด ๋ด์ฉ์ ํ์ธํ๋ ค๋ฉด ํน์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
RDB ํ์ผ์ ์์ฑ
RDB ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- RDB ํ์ผ ํค๋: RDB ํ์ผ์ ์์์ ๋ํ๋ด๋ ๋ง์ ๋ฌธ์์ด๊ณผ Redis ๋ฒ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ฉ: Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ, ์ฆ ํค, ๊ฐ์ ํฌํจํ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ง๋ง: RDB ํ์ผ์ ๋์ ๋ํ๋ด๋ ๋ง์ ๋ฌธ์์ด๋ก, ํ์ผ ๋์ ๋ํ๋ ๋๋ค.
RDB ํ์ผ์ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ์ ์ ํฉํฉ๋๋ค. ๋ํ RDB ํ์ผ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ก๋ํ๊ณ ๊ฒ์ํ ์ ์์ผ๋ฉฐ, Redis ์๋ฒ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๊ทธ๋ฌ๋ RDB ํ์ผ์ Redis ๋ฐ์ดํฐ์ ์ค๋
์ท๋ง ์ ์ฅํ๋ฏ๋ก ํ์ผ์ ์
๋ฐ์ดํธํ๋ ค๋ฉด ์๋ก์ด RDB ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก RDB ํ์ผ์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ ๋ฐ์ดํฐ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋์ , Redis๋ AOF(Append Only File) ํ์ผ์ ์ฌ์ฉํ์ฌ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
RDB ํ์ผ์ ์ด์ด ๋ด์ฉ์ ์ฝ๋(ํ์ธํ๋) ๋ฐฉ๋ฒ
์ด๋ฌํ RDB ํ์ผ์ ์ด๋ป๊ฒ ๋ด์ฉ์ ํ์ธํ ์ ์์๊น์?
์ด์ง ํ์์ RDB ํ์ผ์ ์ง์ ์ฝ๊ฑฐ๋ ๊ฒ์ํ๋ ๊ฒ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ Redis ์๋ฒ์ importํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค.
1. Redis-cli ์ฌ์ฉ
RDB ํ์ผ์ ์ด์ด ๋ด์ฉ์ ๋ณผ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ Redis์ redis-cli ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ RDB ํ์ผ์ ๋ก๋ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ์
๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ RDB ํ์ผ์ ๋ก๋ํ๊ณ Redis ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
redis-server --rdb <rdb_file_path>
์ด ๋ช
๋ น์ด๋ RDB ํ์ผ์ ๋ก๋ํ์ฌ Redis ์๋ฒ๋ฅผ ์์ํ๊ณ redis-cli๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ํฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ RDB ํ์ผ์ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ importํ๋ ๊ฒ์
๋๋ค.
RDB ํ์ผ์ importํ๋ ค๋ฉด Redis๋ฅผ ์์ํ ํ ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
redis-cli --rdb <rdb_file_path>
์ด ๋ช
๋ น์ด๋ RDB ํ์ผ์ ๋ก๋ํ์ฌ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์ importํฉ๋๋ค.
๐ RDB ํ์ผ ๋ก๋ vs import
RDB ํ์ผ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ๊ณผ Redis ์๋ฒ์ RDB ํ์ผ์ importํ๋ ๋ฐฉ๋ฒ์ ๋ ๋ค Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๊ธฐ: RDB ํ์ผ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ Redis ์๋ฒ๊ฐ ์์๋ ๋ RDB ํ์ผ์ ๋ก๋ํฉ๋๋ค. ๋ฐ๋ฉด Redis ์๋ฒ์ RDB ํ์ผ์ importํ๋ ๋ฐฉ๋ฒ์ Redis ์๋ฒ๊ฐ ์ด๋ฏธ ์คํ ์ค์ผ ๋ RDB ํ์ผ์ ์ ์ฉํฉ๋๋ค.
๋ฐฉ๋ฒ: RDB ํ์ผ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ Redis ์๋ฒ๊ฐ RDB ํ์ผ์ ์ฝ์ด Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ํฉ๋๋ค. ๋ฐ๋ฉด Redis ์๋ฒ์ RDB ํ์ผ์ importํ๋ ๋ฐฉ๋ฒ์ RDB ํ์ผ์ ์ง์ Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํฉ๋๋ค.
์ํฉ: RDB ํ์ผ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ Redis ์๋ฒ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ฉด Redis ์๋ฒ์ RDB ํ์ผ์ importํ๋ ๋ฐฉ๋ฒ์ Redis ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ์ด์ ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
Redis๋ฅผ ์ฌ์ฉํ์ฌ RDB ํ์ผ์ ๋ก๋ํ๊ฑฐ๋ Redis์ importํ๋ ๊ฒ ์ธ์๋, RDB ํ์ผ์ ๊ฒ์ํ๊ณ ๋ถ์ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ์ฉํ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
Redis Desktop Manager
https://redisdesktop.com/
Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๊ฐ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ก, RDB ํ์ผ์ ๋ก๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
RDBTools
https://rdbtools.com/
RDB ํ์ผ์ ๋ถ์ํ๊ณ ๊ฒ์ํ ์ ์๋ ๋๊ตฌ๋ก, RDB ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํํ๊ณ Redis ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Redis RDB Parser
https://github.com/sripathikrishnan/redis-rdb-tools
RDB ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๊ณ ๊ฒ์ํ ์ ์๋ Python ๊ธฐ๋ฐ ๋๊ตฌ๋ก, RDB ํ์ผ์ ๋ถ์ํ์ฌ ํน์ ํค๋ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
Redis์์ RDB ํ์ผ์ ์ถ์ถํ๋ ๋ฐฉ๋ฒ
RDB ํ์ผ์ ์ถ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Redis CLI ์ฌ์ฉ
Redis CLI๋ฅผ ์ฌ์ฉํ์ฌ Redis ์๋ฒ์์ RDB ํ์ผ์ ์ถ์ถํ ์ ์์ต๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด Redis CLI์์ SAVE ๋ช
๋ น์ ์คํํ์ฌ RDB ํ์ผ์ ์ถ์ถํ ์ ์์ต๋๋ค.
SAVE
์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด Redis ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋
์ท์ด RDB ํ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
2. Redis์ BGSAVE ๋ช
๋ น์ด ์ฌ์ฉ
Redis์ BGSAVE ๋ช
๋ น์ ์ฌ์ฉํ์ฌ Redis ์๋ฒ์์ RDB ํ์ผ์ ์ถ์ถํ ์ ์์ต๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด Redis ์๋ฒ์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ SAVE ๋ช
๋ น์ ์คํํ์ฌ RDB ํ์ผ์ ์ถ์ถํฉ๋๋ค.
BGSAVE
์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด Redis ์๋ฒ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ SAVE ๋ช
๋ น์ ์คํํ๊ณ RDB ํ์ผ์ ์ถ์ถํฉ๋๋ค.
๋ ๋ฐฉ๋ฒ ๋ชจ๋ RDB ํ์ผ์ Redis ์๋ฒ๊ฐ ์คํ๋๋ ๋๋ ํ ๋ฆฌ์ dump.rdb๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.