์ ๋ฆฌ์ค-6
by JiwonDevMySQL์ 5.7๋ถํฐ ๋ฐ์ดํฐ ์ํธํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ฒ์์๋ ๋ฐ์ดํฐ ํ์ผ(Table Space)์๋ง ์ํธํ๋ฅผ ์ ๊ณตํ์์ผ๋, MySQL8.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋๋ฉฐ ๋ฆฌ๋, ์ธ๋๋ก๊ทธ์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฑ ๋ชจ๋ ๊ฒ์ ์ํธํ ํ ์ ์๊ฒ ๋ณ๊ฒฝ๋์๋ค.
๐ ์ํธํ์ ๋ณตํธํ๊ฐ ์งํ๋๋ ๊ณณ
MySQL ๋ด๋ถ์์ ์ํธํ๋ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋๊ฑด ์๋๋ค. ์ฆ MySQL ๋ด๋ถ์ ์ฌ์ฉ์ ์ ์ฅ์์๋ ์ํธํ๋ฅผ ํ๋ ๋ง๋ ๋ณ ์ฐจ์ด๊ฐ ์๋๋ฐ, ์ด๋ฅผ TDE(Transparent Data Encryption, ํฌ๋ช ํ ๋ฐ์ดํฐ ์ํธํ)์ด๋ผ ๋ถ๋ฅธ๋ค.
๋์คํฌ <-> MySQL ์๋ฒ ์ฌ์ด์์ ์ํธํ ๋ฐ ๋ณตํธํ๊ฐ ์ด๋ฃจ์ด์ง๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฆ ๋์คํฌ ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ InnoDB ์คํ ๋ฆฌ์ง ์์ง์ I/O ๋ ์ด์ด์์ ์ํธ & ๋ณตํธํ๊ฐ ์งํ๋๋ค.
์ํธํ๋ ๋ณดํต ๋ฉ๋ชจ๋ฆฌ(In-Process), ๋คํธ์ํฌ ์ ์ก(In-Transit), ๋์คํฌ ์ ์ฅ(At Rest)์์ ์ฌ์ฉํ๋๋ฐ, MySQL์ AtRest ๋ฐฉ์์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋๊ฒ ๋ค.
๐ 2๋จ๊ณ ํค ๊ด๋ฆฌ
MySQL ์๋ฒ์ TDE์์, ์ํธํ ํค๋ KeyRing์ด๋ผ๋ 2๋จ๊ณ ํค ๊ด๋ฆฌ ํ๋ฌ๊ทธ์ธ์ ์ํด ๊ด๋ฆฌ๋๋ค.
์ฐธ๊ณ ๋ก ์ํฐํ๋ผ์ด์ฆ๋ฅผ ์ฌ์ฉํ๋ฉด KeyRing ์ํธํ ๋ฐฉ์์ KMIP, AWS๋ฑ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ๊ธฐ๋ณธ์ File-Based
๋ฌผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ง์ ์ํธํํด์ MySQL์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
์ด๋ MySQL์ ์ํธํ ์ฌ๋ถ๋ฅผ ์ธ์งํ์ง ๋ชปํ๊ณ , ์ธ๋ฑ์ค๊ฐ ์ ๋๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ ์๋๋ค.
ํ์ง๋ง MySQL ์๋ฒ์ ๋ฃจํธ ๊ถํ์ ๊ฐ์ง๊ณ ๋ก๊ทธ์ธํ ์ ์๋ค๊ณ ํ๋๋ผ๋ ํ๋ฌธ์ ๋ด์ฉ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์, ์ดํ๋ฆฌ์ผ์ด์ ์ํธํ๋ฅผ ์ ์ ํ ํผํฉํด์ ์ฌ์ฉํ๋ค๋ฉด ๋ ์์ ํ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค. (ex ๋น๋ฐ๋ฒํธ ์ ์ฅ)
๐ ์ํธํ์ ์ฑ๋ฅ
์์๋ ์ธ๊ธํ์ง๋ง, TDE ๋ฐฉ์์ ๊ฒฝ์ฐ ๋์คํฌ๋ก๋ถํฐ ์ด๋ฏธ ์ฝํ์ง ๋ฐ์ดํฐ๋ ๋ณตํธํ๊ฐ ์๋ฃ๋ ์ํ๋ก InnoDB ๋ฒํผํ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ ํ ์ํฅ์ด ์๋ค.
๋ฌผ๋ก ์ฟผ๋ฆฌ๊ฐ ๋ฒํผํ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ, ๋์คํฌ์์ ๋ณตํธํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์ฌ์ฉ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ์ ํ๋ ๊ฒ์ด๋ค.
๋ค๋ง ์ํธํ์ ๊ฒฝ์ฐ ํฐ ์๊ด์๋ค. ์๋ํ๋ฉด ๋ฐ์ดํฐ ํ์ด์ง ์ ์ฅ์ ์ค๋ ๋๊ฐ ๋ถ๋ฆฌ๋์ด์๊ธฐ ๋๋ฌธ์ด๋ค. MySQL ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๊ฐ ์ํํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์ฑ๋ฅ์ ๋ ์ฌ์ฉํ๊ฒ ์ง๋ง, ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ์ง์ฐ์ ๋ฐ์ํ์ง ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ์ฉ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ๋ง๊ณ , ์๋ฒ ์์. ์ฆ ๋์คํฌ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ์ผ๋ง๋ ๋๋ ค์ง๊น? ์๋น์ค๋ง๋ค ๋ค๋ฅด๊ฒ ์ง๋ง, ๋ณดํต ์ฝ๊ธฐ๋ 3๋ฐฐ, ์ฐ๊ธฐ๋ 5๋ฐฐ ์ ๋ ๋๋ ค์ง๋ค. ๋ฌผ๋ก ๋ฐ๋ฆฌ์ด(ms)๋จ์๋ผ์ ํฐ ์ฐจ์ด๊ฐ ์๋ค๊ณ ๋ณผ ์๋ ์๊ฒ ๋ค.
์ค์ง์ ์ธ ์ฑ๋ฅ ์ ํ๋ฅผ ์๊ธฐ์ํด์๋, MySQL TDE์ ์ฌ์ฉ๋๋ AES-256 ์๊ณ ๋ฆฌ์ฆ์ ํน์ง์ ์์์ผ ํ๋ค.
AES (Advanced Encryption Standard) ์๊ณ ๋ฆฌ์ฆ์ ์ํธํ ๋์์ ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ ์ฉ๋์ด ๋ ์ปค์ง ์ ์์ง๋ง, MySQL ํ์ด์ง๋ ์ํธํ ํค๋ณด๋ค ์ด๋ฏธ ํจ์ฌ ํฌ๊ธฐ๋๋ฌธ์ ๋ณ ์๊ด์๋ค. ๊ทธ๋์ TDE๋ฅผ ์ ์ฉํด์ ์ํธํ ์ /ํ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ ๋์ผํ๋ค.
๋ค๋ง ๊ฐ์ ํ ์ด๋ธ์ ๋ํด ์ํธํ์ ์์ถ์ด ๋์์ ์ ์ฉ๋ ๋, MySQL์ ์์ถ์ ๋จผ์ ์คํํ๊ณ ์ํธํ๋ฅผ ์คํํ๋ค.
์ด๋ ์ํธํ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํผ๋์ฑ(Chaos)์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์์ถ ํจ์จ์ด ๋งค์ฐ ๋จ์ด์ง๊ณ , ์ํธํ๋ฅผ ๋จผ์ ํด๋ฒ๋ฆฌ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด ๋ฌ๋ผ์ ธ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ด์ง๋ ์ํธํ&๋ณตํธํ๋ฅผ ์ค๋ณตํด์ ํ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ๋ก๊ทธ ์ํธํ
Redo, Undo, ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ๋ชจ๋ ์ํธํ ๊ฐ๋ฅํ๋ค. ์ํธํ ๋ฐฉ๋ฒ์ ๋์ค์ ์ถ๊ฐ๋ก ์์ฑํ๊ฒ ๋ค-
์ฐธ๊ณ ๋ก ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ์ํธํํ๋ฉด mysqlbinlog๋ฑ์ ๋๊ตฌ๋ก ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ํตํ ๋ณต๊ตฌ๊ฐ ์ด๋ ต๋ค.
๊ธฐ์กด์๋ ๋ก๊ทธ๋ง ๋ฐฑ์ ํด๋๋ฉด ์ด๋ฅผ ์ด์ฉํด DB ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์ด์ ์ํธํ๋์ด ๋ก๊ทธ๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋น๋ฐํค๊ฐ ํด๋น ๋ก๊ทธ๋ฅผ ๋ง๋ค์ด๋ธ MySQL์ด ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์๋์ ๊ฐ์ด mysqlbinlog ๋๊ตฌ๊ฐ ํด๋น MySQL ์๋ฒ๋ก ์ ์ํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋ฐ์๋ ์๋ค. ๋ง์ฝ ํด๋น ์๋ฒ์ ์ ์์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ํตํ ๋ณต๊ตฌ๋ ๋ถ๊ฐ๋ฅํ๋ค.
$ mysqlbinlog --read-from-remote-server -uroot -p -vvv ๋ฐ์ด๋๋ฆฌ๋ก๊ทธํ์ผ
$ Enter password:
'๐ฑBackend > DB(MySQL,PostgreSQL)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
PostgreSQL ์ vaccum์ ๋ํด ์์๋ณด์. (2) | 2024.05.26 |
---|---|
์ ๋ฆฌ์ค-5 (0) | 2021.10.27 |
์ ๋ฆฌ์ค - 4 (0) | 2021.10.20 |
์ ๋ฆฌ์ค - 3 (0) | 2021.10.20 |
์ ๋ฆฌ์ค -2 (0) | 2021.10.20 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev