๐ RDB ํ์ผ ๊ตฌ์กฐ ๊ฐ์
Redis์ RDB ํ์ผ(dump.rdb)์ ๋ฐ์ดํฐ ์ค๋
์ท(๋ฐฑ์
) ์ ์ ์ฅํ๋ ์ด์ง(binary) ํ์ผ์
๋๋ค.
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
๐งฉ ๊ทธ๋ฆผ 5-1: RDB ํ์ผ ๋ด์ฉ
Header ๋ฐ์ดํธ
AUX ํ๋ 1
AUX ํ๋ 2
...
AUX ํ๋ N
๋ฐ์ดํฐ๋ฒ ์ด์ค 0์ ํค-๊ฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค 1์ ํค-๊ฐ
...
๋ฐ์ดํฐ๋ฒ ์ด์ค N์ ํค-๊ฐ
EOF
CRC64 ์ฒดํฌ์ฌ
๐ ๊ตฌ์ฑ ์์ ์ค๋ช
๊ตฌ์ฑ ์์ ์ค๋ช
Header REDIS ๋ฌธ์์ด + RDB ๋ฒ์ ์ ๋ณด (์: REDIS0010 โ ๋ฒ์ 10)
AUX ํ๋ Redis์ ๋ฉํ๋ฐ์ดํฐ ์ ๋ณด ์ ์ฅ (Redis ๋ฒ์ , ์์ฑ ์๊ฐ, ๋ณต์ ๊ด๋ จ ์ ๋ณด ๋ฑ)
Database ๋ฐ์ดํฐ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB 0~N)์ ์ค์ ํค-๊ฐ ๋ฐ์ดํฐ ์ ์ฅ
EOF ํ์ผ์ ๋์ ๋ํ๋ด๋ ๋ง์ปค
CRC64 ์ฒดํฌ์ฌ ํ์ผ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ์ฉ ํด์๊ฐ
โ๏ธ RDB ๋ฒ์ ๋ฐ ํธํ์ฑ
์: REDIS0010 โ Redis 10 ๋ฒ์ ํ์์ RDB ํ์ผ
Redis๋ ๋ฒ์ ๋ง๋ค RDB ํฌ๋งท์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋ฉฐ, ์ ๋ฒ์ ์ ๊ตฌ๋ฒ์ RDB๋ฅผ ์ฝ์ ์ ์์ง๋ง,
๊ตฌ๋ฒ์ ์ ์ ๋ฒ์ RDB๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
Redis 3.2.1 ์ดํ๋ถํฐ๋ ๋ ํ๋ฆฌ์ผ์ด์
(replication) ๊ณผ์ ์์
๋ง์คํฐ์ RDB ๋ฒ์ ๊ณผ ์ฌ๋ ์ด๋ธ์ RDB ๋ฒ์ ์ด ๋ฌ๋ผ๋ ๋์ํ๋๋ก ํธํ์ฑ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค.
(์์ ์๋ ๋ฒ์ ์ฐจ์ด๊ฐ ์์ผ๋ฉด ๋๊ธฐํ๊ฐ ๋ถ๊ฐ๋ฅํ์)
๐งฎ AUX ํ๋ โ RDB ๋ฉํ๋ฐ์ดํฐ ์ ๋ณด
RDB ํ์ผ์๋ ๋ฐ์ดํฐ ์ธ์๋ ๋ฉํ๋ฐ์ดํฐ(AUX fields) ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ด๋ RDB๋ฅผ ๋ง๋ Redis ์ธ์คํด์ค์ ์ํ๋ ์ค์ ์ ๋ณด๋ฅผ ๋ด์ต๋๋ค.
ํ 5-1: RDB์ ๋ฉํ๋ฐ์ดํฐ ์ ๋ณด
๋ฉํ๋ฐ์ดํฐ ์ค๋ช
redis-ver Redis ๋ฒ์ ์ ๋ณด
redis-bits ์คํ ์ค์ธ ํธ์คํธ์ ์ํคํ
์ฒ ๋นํธ (32bit / 64bit)
ctime RDB ํ์ผ์ด ์์ฑ๋ ์ ๋์ค ์๊ฐ (Unix Time)
used-mem RDB ์์ฑ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
repl-stream-db ๋ ํ๋ฆฌ์ผ์ด์
์ ์ ํ๋ DB ๋ฒํธ
repl-id ๋ง์คํฐ ๋ ํ๋ฆฌ์ผ์ด์
ID
repl-offset ๋ ํ๋ฆฌ์ผ์ด์
์คํ์
๊ฐ (๋ฐ์ดํฐ ์คํธ๋ฆผ ์์น)
aof-base ๋ฉํฐ ํ๋ AOF ์ฌ์ฉ ์ฌ๋ถ
lua Lua ์คํฌ๋ฆฝํธ ์คํ ๊ด๋ จ ์ ๋ณด (EVALSHA ๋ฐฑ์
์ ์ฌ์ฉ)
์ด ๋ฉํ๋ฐ์ดํฐ๋ค์ RDB ๋ฐฑ์
์ ํ๊ฒฝ ์ ๋ณด๋ฅผ ํฌํจํด
๋ณต์ (Replication), ๋ณต๊ตฌ ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๐ง ์ถ๊ฐ ์ค๋ช
opcode ํ๋: RDB๋ ๊ฐ ํญ๋ชฉ๋ง๋ค ๋ฐ์ดํฐ ์ข
๋ฅ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด opcode๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก opcode๊ฐ ๋ฑ์ฅํ๋ฉฐ, ๊ทธ ๋ค์ ํค-๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ผ์ต๋๋ค.
CRC64: ํ์ผ ๋๋ถ๋ถ์ ์์นํ๋ฉฐ, ํ์ผ ์์ ์ฌ๋ถ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
(redis-check-rdb dump.rdb ๋ช
๋ น์ผ๋ก ํ์ธ ๊ฐ๋ฅ)
๐งพ ์์ฝ
๊ตฌ๋ถ ๋ด์ฉ
ํ์ผ ์์ REDIS + ๋ฒ์ ๋ฒํธ
๋ฉํ๋ฐ์ดํฐ AUX ํ๋ (๋ฒ์ , ์์ฑ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ)
๋ฐ์ดํฐ ์ ์ฅ๋ถ ๊ฐ DB๋ณ key-value ๋ฐ์ดํฐ
ํ์ผ ์ข
๋ฃ EOF + CRC64 ์ฒดํฌ์ฌ
ํน์ง ๋ฒ์ ๊ฐ ํธํ์ฑ ์ ์ง (3.2.1 ์ดํ), ๋ณต์ ์ ๋ฐฑ์
์ ํ์ฉ
๐ก ์ฆ, RDB ํ์ผ์ Redis์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ด์ง ํฌ๋งท์ผ๋ก ์ง๋ ฌํํ ํ์ผ์ด๋ฉฐ,
๋จ์ํ ๋ฐฑ์
ํ์ผ์ด ์๋๋ผ ํ๊ฒฝ ๋ฉํ๋ฐ์ดํฐ์ ๋ณต์ ์ ๋ณด๊น์ง ํฌํจํ ์์ ํ ์ค๋
์(snapshot) ์
๋๋ค.