ProSync์ Flow Control์ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ค์ ์ ๋ฆฌํ ๋ฌธ์์ด๋ค. ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋๋ ์ผ๋ จ์ ๊ณผ์ ์ด ์์ ์ ์ผ๋ก ์ด์๋๊ธฐ ์ํด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๊ด๊ฑด์ด๋ค.
์ฒ๋ฆฌ๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค๋ฉด ๋๊ธฐํ ๋ก์ง ์ ๋ฐ์ดํฐ๋ ๊ณ์ํด์ ์์ด๊ฒ ๋๋ค. ์์ธ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ฉด ๋น์ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์๊ณ๊ฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ฑฐ๋ ์ผ์์ ์ผ๋ก ์ง์ฐ์ํค๋ ๋์์ด ์ํ๋๋ค.
๋ํ ์ฒ๋ฆฌ ์๋๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ค๋ ์กด์ฌํ๋ค. ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๋ฉด ๊ทธ๋งํผ ์ถ์ถํ ๋ฐ์ดํฐ๊ฐ ์ค์๊ฐ์ฑ์ด ๋๊ฒ ๋ฐ์์ด ๋๋ค๋ ์๋ฏธ์ด๋ฏ๋ก, ์ด ๋ถ๋ถ์ ๊ณ ๋ คํ์ฌ ํ๊ฒฝ ์ค์ ์ ํ๋ ๊ฒ์ด ์ข๋ค.
๋ง์ง๋ง์ผ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋, ์ ํฉ์ฑ์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ธฐํ๊ฐ ๋ฉ์ถ๊ฒ ๋์ด์๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๊ฐ ๋์ด์ ์ฒ๋ฆฌ๋ ์ ์์ด์ ์๊ตฌ์ ์ธ ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋, ์ด๋ฅผ ์๋์ผ๋ก ์๋ตํ๊ฑฐ๋ Rule์ ๋ง์ถฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์์๋ณธ๋ค.
ProSync์ ๋ฐ์ดํฐ ํ๋ฆ๋๋ฅผ ์์ธํ ์ดํดํ๊ณ , ์ด๋ฅผ ํตํด Memory ์ฌ์ฉ๋ ์กฐ์ ๋ฐฉ์์ ์๋ดํ๋ค.
๋ฐ์ดํฐ๊ฐ ์ฒ์ ์์ฑ๋๋ ์์น๋ Source DB์ Redo Log์ด๋ค. Redo Log์์ ๋ฐ์๋ ๋ฐ์ดํฐ๋ฅผ Extract ๊ฐ ์ถ์ถํ์ฌ Chunk ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ค.
์ ์ฌ๋ ๋ฐ์ดํฐ๋ TCP Socket์ ํตํด ์ ์ก์ด ๋๋ค. Non Blocking ํต์ ์ด๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์ ์ก์ด ์คํจํ๋ฉด, ์ดํ์ ๋ฐ์ดํฐ๋ค์ Non Blocking Queue์ ์์ด๊ฒ ๋๋ค. ์ด Queue์ ์์ธ ๋ฐ์ดํฐ๋ ์ปค๋๋ก๋ถํฐ ๋ฐ๋์ชฝ TCP Recv Buffer๊ฐ ๋น์ด์๋ค๋ ์ ํธ๊ฐ ์ฌ ๋, ์์๋๋ก ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค.
Apply๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ฒดํ (์ญ์ง๋ ฌํ) ํ์ฌ TX_HASH์ ์์ด๊ฒ๋๋ค. xid ๋ ํธ๋์ญ์ ๊ณ ์ ์ id ๋ฅผ ์๋ฏธํ๋ฉฐ, ACID๋ฅผ ์ง์ผ์ฃผ๊ธฐ ์ํด ํธ๋์ญ์ ์ ์ปค๋ฐ๊น์ง ์ด ์์น์์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋ณด๊ดํ๋ค. ํธ๋์ญ์ ์ ์ปค๋ฐ์ด ๋ค์ด์ค๋ฉด ํด๋น ํธ๋์ญ์ ์ Target Database์ ๋ฐ์์ด ๊ฐ๋ฅํ ์ํ๋ก ํ๋จํ๊ณ Replay Queue๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค๋ค.
Wait Queue์ ์์ธ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ๋ค์ด ์ปค๋ฐ๋ ์์์ ๋ง๊ฒ Target Database๋ก ๋ฐ์์ด ๋๋ค. ์ด ๋ ๋ฐ์ ์ค์ธ ํธ๋์ญ์ ๊ณผ ๋ฐ์ ๋๊ธฐ ์ค์ธ ํธ๋์ญ์ ์ด ์์ ํ ๋ฐ, ์ด๋ค๊ฐ์ ์์กด์ฑ ๊ฒ์ฌ๋ฅผ ํตํ์ฌ ์๊ฐ ์์์ ๋ง๊ณ , ์์กด์ฑ์ด ์๋ ํธ๋์ญ์ ๋ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌํ์ฌ ์ฑ๋ฅ์ ๋์ธ๋ค.
TX_HASH ์ ๋ฐ์ดํฐ๊ฐ ๊ณ์ ์์ธ๋ค๋ฉด Out of Memory ๋ฅผ ํผํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ํน์ ์๊ณ์น๋ฅผ ๋์ด๊ฐ ๊ฒฝ์ฐ Part File์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ ํ์ผ์ ์์ฑํ์ฌ ์ด ์์น๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ์ค๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ๊ธฐ์ค์ ํ์ฌ TX_HASH์ ์๋ ๋ฐ์ดํฐ๋ค ์ค ๊ฐ์ฅ ์ฉ๋์ด ํฐ ํธ๋์ญ์
๊ธฐ์ค์ผ๋ก ํ์ผ๋ก ๋ด๋ ค๊ฐ๊ฒ ๋๋ฉฐ, ๋ด๋ ค๊ฐ ํ์ผ์ ์ค์ ๋ฐ์์ด ๋๋ ์์ ๊น์ง ๊ณ์ Disk์ ๋จ๊ฒ ๋๋ค
์ด์ ๋ํ ๊ธฐ์ค์ด ๋๋ ํ๋ผ๋ฏธํฐ๊ฐ TX_HASH_SIZE ํ๋ผ๋ฏธํฐ์ด๋ค. TX_HASH_SIZE๋ผ๋ ์๊ณ์น๋ณด๋ค ๋ ๋ง์ด ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋์์ด ์ํ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Part File์ ๋ฐ์์ด ์๋ฃ๋๋ฉด ์ ๊ฑฐ๊ฐ ๋๋ฉฐ, ๋ฐ์์ด ๋๊ธฐ ์ ๊น์ง Disk์ ๋จ๋๋ค. ์ค์ ํธ๋์ญ์ ๋ฐ์ ์์ ์๋ Part File๋ก ๋ด๋ ค๊ฐ DML ๋ฐ์ดํฐ๋ค์ด ์๊ฐ ์ ๋ ์์๊ธฐ ๋๋ฌธ์, ํ์ผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฐ์ํ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ๋ค.
ProSync๋ ACID๋ฅผ ์ง์ผ์ฃผ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์์์ ๋ง๊ฒ ๋ฐ์ํด์ผ ํ๋ค. ์ฆ, ์์ ํธ๋์ญ์ ์ด ๋ฐ์๋์ง ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ๋ฐ์๋ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋ผ์ Target Database์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๋ค๋ฉด ๊ทธ๋งํผ Queue์๋ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ค.
Queue์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ProSync๋ Queue ๋ด์์ ๋๊ธฐ ํน์ ๋ฐ์ ์ค์ธ ํธ๋์ญ์ ๋ค์ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ ํ์ธํ๋ค. ์ด ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๋ค๋ฉด Memory ํ ๋น์ ๋ฉ์ถฐ์ผ ํ๋ค.
Memory ํ ๋น์ ๋ฉ์ถ๊ธฐ ์ํด ProSync๋ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ์์ฐ๋๋ ๊ฒ์ ๋ง๋๋ค. ์ฆ, Extract ์์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ฐจ๋จํจ์ผ๋ก์จ, ํ์ฌ ๋ณด์ ์ค์ธ ๋ฐ์ดํฐ๊ฐ ์ผ์ ์์ค ์ด์ ์ฒ๋ฆฌ๋ ๋๊น์ง ๋๊ธฐ ์ํ๋ฅผ ์ ์งํ๋๋ก ๊ฐ์ ํ๋ ๋ฐฉ์์ด๋ผ ๊ณ ๋ณผ ์ ์๋ค.
Extract๋ ์์์ ์ค๋ช ํ ๋ด์ฉ๋๋ก Non Blocking Queue์ ๋ฐ์ดํฐ๋ฅผ ์๋ค๊ฐ ์ค์ ์ถ์ถ์ ๋ฉ์ถค์ผ๋ก์จ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์์ฐ์ ๋ฉ์ถ๊ฒ ๋๋ค.
์๊ณ์น์ ํด๋นํ๋ ํ๋ผ๋ฏธํฐ๋ ์๋์ ๊ฐ๋ค.
MEMORY_CTRL_STOP_SIZE Wait Queue์ ์ด ํฌ๊ธฐ ์ด์ ๋งํผ์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ฉด Socket ์ผ๋ก ๋ถํฐ ์ถ๊ฐ์ ์ผ๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ค.
MEMORY_CTRL_RESUME_SIZE Wait Queue์ ์ด ํฌ๊ธฐ ์ดํ๋งํผ ๋ฐ์ดํฐ๊ฐ ์ค์ด๋ค๋ฉด, Socket ์ผ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ฐ๋๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
Active-Active Cluster์ธ RDBMS๋ค์ Physical Disk๋ฅผ ๊ณต์ ํ๊ณ ์๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๊ณต๊ฐ์ ์๋ก ์์์ ์ ํฉํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ค. Redo Log๋ ์๋ก ๋ค๋ฅธ ๊ณณ์ ์์ฑํ๋๋ผ๋ Change Data๋ค์ ์๊ฐ์ ์์์ ๋ง๊ฒ ๋ ์์ฑ์ด ๋๋ค. ProSync ์ ์ฅ์์ ๋ณด๋ฉด ์๋ก ๋ค๋ฅธ ์์น์ ๋จ์ Redo Log๋ค์ ๋ชจ์ ์ง๋ ฌํ๋ฅผ ํ๋ฉด ๊ฒฐ๊ตญ DB Time ์์๋๋ก ๋ฐ์ดํฐ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ด๋ค.
๋ฐ๋ผ์ ProSync์ Apply ์ ์ฅ์์ ์ถ์ถ์ด Cluster์ธ์ง ์๋์ง๋ ๊ด์ฌ์ฌ๊ฐ ์๋๋ค. ์ด์ฐจํผ DB Time๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ผ๋ฉด ๋จ์ํ ํ ์ค๋ก ์ธ์ ๋๊ณ ํ๋์ฉ ์ฟผ๋ฆฌ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค. ๋ค๋ง ๋ฌธ์ ๋ ์ฅ์ ์ํฉ์ด๋ ์ง์ฐ ์ํฉ์์ ๋ฐ์ํ๋ค.
๋ง์ฝ์ ํ์ชฝ ๋ ธ๋์์ ์๋ฌด๋ฐ ๋ถํ๊ฐ ์๊ฑฐ๋ ์ฅ์ ๋ก ๋ฉ์ถฐ๋ฒ๋ฆฌ๊ฒ ๋๋ฉด Redo Log ์์ฑ์ด ๋ฉ์ถ๊ฒ ๋๋ค. ์ฝ์ ๊ฒ์ด ์๋ Extract ํ๋ก์ธ์ค๋ ์๋ฌด๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๊ฐ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด Apply ํ๋ก์ธ์ค ์ ์ฅ์์ ํ์ฌ Cluster ์ค ํ๋๊ฐ ์ฅ์ ๊ฐ ๋์ ๋ชป ๋ณด๋ด๊ณ ์๋ ๊ฒ์ธ์ง, ๋ถํ๊ฐ ์์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ชป ๋ณด๋ด๋ ๊ฒ์ธ ์ง ํ์ธํ ๋ฐฉ๋ฒ์ด ์๋ค.
๋ฐ๋ผ์ Extract ์์๋ ๋ฐ์ํ์, ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ ๋ฉ์์ง๋ฅผ TCP Socket์ผ๋ก ์ ๋ฌํด์ฃผ๊ณ , ๋ถํ๊ฐ ์๋ ์ํฉ์ ๋๋นํ์ฌ ProSync์ฉ Dummy Table์ ๊ฐ์ ๋ก ๋ถํ๋ฅผ ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์์ฐํด์ ์ ๋ฌํด์ค๋ค.
์ด ๊ณผ์ ์ ํตํด Applyํ๋ก์ธ์ค๋ ์๋ก ๋ค๋ฅธ Cluster Node์ ๋ฐ์ดํฐ๋ค์ ํญ์ ์ ๋ ฌํ ์ ์๋ค. ํ์ง๋ง ์ ๋ ฌ์ ํ๊ธฐ ์ํด์ ์ ๋ ฌ์ ์ํ ๊ณต๊ฐ์ด ํ์ํ๋ฉฐ, ์ด ์์น๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
์์ ๊ฐ์ด Extract๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ์ํฉ (Active Cluster) ์์ ๊ฐ Extract ๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๋จผ์ Merge Queue์ ์์ ๋๋๋ค. ์์ธ ๋ฐ์ดํฐ๊ฐ ์ง๋ ฌํ๊ฐ ๋๋ ค๋ฉด ๋ชจ๋ Extract ๋ณ ๋ฐ์ดํฐ๊ฐ 1๊ฐ๋ผ๋ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋๊น์ง Merge Queue์ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ค.
๋ค๋ง ๋คํธ์ํฌ ์ฅ์ ๋ ๋ชจ์ข ์ ์ด์ ๋ก ํ์ชฝ์์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ํ์๊ฐ ๋งค์ฐ ์ง์ฐ๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๊ธฐ์๋ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค์ง ๋ชปํ๊ฒ TCP Socket์ผ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ๋์์ด ์ฌ์ฉ๋๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ๋ ์๋์ ๊ฐ๋ค.
MERGE_BLOCK_CNT ํน์ ๋ ธ๋๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ด ๊ฐฏ์ ์ด์๋งํผ ์์ด๋ฉด ํด๋น TCP Socket์ ๋ง๋๋ค.
MERGE_RESUME_CNT ํน์ ๋ ธ๋๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ด ๊ฐฏ์ ๋ณด๋ค ์๋ค๋ฉด ํด๋น TCP Socket์ ๋ค์ ์ด์ด์ค๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
Extract ๋ณ๋ก ์ฐ๊ฒฐ์ด ๋ฐ๋ก ์กด์ฌํ๋ฏ๋ก ์ด์ ๊ฐ์ด ๋ณ๋๋ก ๊ด๋ฆฌํ๊ฒ ๋๋ค.
ProSync๋ Apply ํ๋ก์ธ์ค ์ง์ฐ ์ ๋ชจ๋ ๊ณณ์ ์ง์ฐ์ด ๋ฐ์ํ๊ฒ ๋๋ค. ์ด ๋๋ฌธ์ ์ฑ๋ฅ์ ์ฌ๋ฆด ์ ์๋ ์๋จ๋ค์ด ์กด์ฌํ๋ค. ๋ณธ ์ฅ์์ Performance ์ธก๋ฉด์์ ์ค์ ํ ์ ์๋ Configuration๋ค์ ๋ํด ์์๋ณธ๋ค.
์ฃผ์
Wait Queue ๊ด๋ จ
Replay ์ชฝ์์ ๋ง์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. ๋ฐ๋์ Wait Queue๋ง ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋ฉฐ, ์ฌ๋ฌ ์ข ๋ฅ์ Queue๋ Tree ๋ฑ์ด ์ฌ์ฉ๋๋๋ฐ, ์ฌ๊ธฐ์ ์ค๋ช ์ ์ํด ๋ชจ๋ Wait Queue๋ก ์ถ์ํํ์ฌ ์ค๋ช ํ๋ค.
TX_HASH_SIZE ํ๋ผ๋ฏธํฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ๋ฐ์ดํฐ ์ถฉ๋ ๋ฐ์ ์, ์ฒ๋ฆฌ๋ฐฉ์์ ๋ํด ํ์ธํ๋ค.
Batch Execution์ RDBMS ์์์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ Batch ๊ด๋ จ API๋ผ๊ณ ์ดํดํ๋ ๊ฒ์ด ์ฉ์ดํ๋ค. DML ๊ฐ๊ฐ์ ๋ชจ๋ ์ฟผ๋ฆฌ ํํ๋ก ๋ณํํ์ฌ ์ ๋ฌํ๊ธฐ๋ณด๋จ, ๊ฐ์ ํํ์ ์ฟผ๋ฆฌ๋ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ Batch๋จ์๋ก ๋ชจ์์ ์๋ฒ์์ ์ฌ์ฉํ๋๋ก ํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด Insert ์ ๊ฐ์ DML์ด ์ฐ์ํด์ ๋ค์ด์ฌ ๋, Target Database ์ ์ฑ๋ฅ์ ํฅ์ ์ํฌ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์ฆ๊ฐ ์ํค๊ณ ๋๊ธฐํ ์๋๋ฅผ ๋์ด ์ฌ๋ ค์ค ์ ์๋ค.
ํ์ง๋ง ์ ์ฝ์ฌํญ๋ ์กด์ฌํ๋ ๊ธฐ๋ฅ์ผ๋ก, ์๋์ ๊ฐ์ ๋๊ฐ์ง ๊ด์ ์์ ๊ณ ๋ คํ ์ ์๋ค.
๊ฐ์ ํํ์ ์ฟผ๋ฆฌ
Batch๋ก ๋ชจ์์ ๋์ ํ๊ณ
ProSync๋ ํ ํธ๋์ญ์ ์์ DML์ด ์ฐ์ํด์ ๋ค์ด์ฌ ๋ ์ด ์์๋ฅผ ์์๋๋ก ๋ฐ๊พธ์ง ์๋๋ค. ์ ๋ ฅ๋๋ ๋ชจ๋ ์ฟผ๋ฆฌ๋ฅผ ์์๋๋ก ์ ์ฉํด์ผ ์ ํฉ์ฑ์ด ๊นจ์ง์ง ์๋๋ค๋ ๋์ ์ ๋๋ฌธ์ ์ด์ ๊ฐ์ด ์ฒ๋ฆฌ๊ฐ ๋๋ค.
๋ฌธ์ ๋ ์ด๋ ๊ฒ ๋๋ฉด Insert * 3, Update*3, Delete* 3์ ์์๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ๋์ (Insert, Update, Delete) * 3์ ์์๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ๋ Batch Execution ์ ์ฅ์์ ํฐ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
์ ์ฌํ ์ฟผ๋ฆฌ๊ฐ ์ฐ์ํด์ ๋ค์ด์จ๋ค๋ฉด ProSync๋ ์ด๋ฅผ Batch๋ก ๋ฌถ์ด์ ์ฒ๋ฆฌ๋ฅผ ํ ์๊ฐ ์์ง๋ง, ์ฟผ๋ฆฌ๋ค์ ํํ๊ฐ ์ฐ์์ ์ด์ง ์๊ฒ ๋ค์ด์จ๋ค๋ฉด Batch๋ก ์ฒ๋ฆฌํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ๋ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๋๋ผ๋ ํ๋๋ Batch ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ๋ค๋ฅธ ํ๋๋ Batch ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
ํธ๋์ญ์ ๋ด์ ๊ฐ์ ํํ์ ์ฟผ๋ฆฌ๋ค์ด ์ฐ์ํด์ ๋ค์ด์จ๋ค๊ณ ๊ฐ์ ์ ํ์ฌ๋ ์ฑ๋ฅ ํฅ์์ด ๋ฏธ๋นํ ๊ฒฝ์ฐ๋ ์กด์ฌํ๋ค. ์๋ฅผ ๋ค์ด Insert์ ๊ฒฝ์ฐ Batch ๋์์ ํตํด ๋ฐ์ดํฐ์ ๊ฐ์๋ ํฌ๊ธฐ ๋ฑ์ Target Database์ ๋ฏธ๋ฆฌ ์๋ ค์ค๋ค๋ฉด Database๋ ์ด์ ๋ง๋ ํ๋์ ์ธ์์ ์ต์ ํ ํ์ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง Delete๋ Update ์ฒ๋ผ ๊ฐ row ๋ณ๋ก Where Clause์ ์ํด ๋ฐ๋ก ํ์์ ํด์ผ ํ๋ ํํ๋ก ๋ค์ด์จ๋ค๋ฉด ์๋ฌด๋ฆฌ ๋ชจ์ ๋ณด๋ด๋ ์๋ฒ ์ ์ฅ์์ ํ๋์ฉ ์ฒ๋ฆฌํ๋, ๋ชจ์์ ๋ค์ด์จ๊ฑธ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ฐ๋ผ์ ProSync๋ ํน๋ณํ ์ค์ ์ด ์๋ค๋ฉด Insert์ ๋ํ Batch๋ง ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ธฐ๋ณธ ๋์์ด๋ค. ํ์ง๋ง Database ๋ณ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์ Batch ์ฌ์ฉ ์ฌ๋ถ๋ ํ๋ผ๋ฏธํฐ๋ก ๋ชจ๋ ๊ด๋ฆฌ๊ฐ ๋๋ค.
Parameter ๋ณ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค.
USE_BATCH_MODE
๊ธฐ๋ณธ ๊ฐ์ Y ๋ก, Batch๋ ํญ์ ๋์ํ๋๋ก ๋์ด์๋ค.
BATCH_MEM_SIZE
๊ธฐ๋ณธ ๊ฐ์ 10MB๋ก ์๋ฒ์ ๋ณด๋ผ ๋ ์ต๋ 10MB์ ๋ฐ์ดํฐ๊น์ง๋ง ์๊ณ ์ฟผ๋ฆฌ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์์ฒญํ๋ค.
USE_ONLY_INSERT_BATCH
Insert ๋ง Batch ๋ก ์ฒ๋ฆฌํ ๊ฒ ์ธ์ง์ ๋ํ ํ๋ผ๋ฏธํฐ๋ก ๊ธฐ๋ณธ ๊ฐ์ Y ์ด๋ค.
Redo Log๋ ๋ฌผ๋ฆฌ์ ์ธ ์์น์ ๋ํ ๋ณ๊ฒฝ๋ถ์ด ๋จ๋๋ค. RDBMS (์ฃผ๋ก Oracle, Tibero) ์์๋ row ๋ฐ์ดํฐ๊ฐ ROW_ID ๋ผ๋ ๊ณ ์ ์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋๋ฐ, ์ด ID์๋ ๋ฐ์ดํฐ ํ์ผ์ ์์น, ํ์ผ ๋ด ๋ฐ์ดํฐ ๋ธ๋ก์ ์์น, ๋ธ๋ก ๋ด row์ ์์น ์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด์๋ค.
ProSync๋ ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ํด์ง ROW_ID๋ง ๊ฐ์ง๊ณ ๋ Target Database์์ ์ ํํ๊ฒ ์ด๋ค row์ธ์ง ํ๋ณํ ์๊ฐ ์๋ค. ์๋ํ๋ฉด ๋ฐ์ดํฐ ํ์ผ๋ ๋ค๋ฅผ ๊ฒ์ด๊ณ , ๋ธ๋ก ์์น๋ row ์์น ์ ๋ณด๋ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ROW_ID๋ก๋ ์๋ก ๋ค๋ฅธ Database์ row๋ฅผ ๋งค์นญ ์ํค๊ธฐ๊ฐ ์ด๋ ต๋ค.
๋ฐ๋ผ์ SUPPLEMENTAL_LOGGING์ต์ ๋ฑ์ ํตํด row ๋ฐ์ดํฐ์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ Redo Log์์ ํจ๊ป ๋จ๊ธฐ๊ฒ ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ์ฌ์ฉ์๊ฐ Where Clause์ 1๊ฐ์ Column์ ๋ณด๋ง ๋ฃ์๋ค๊ณ ํ๋๋ผ๋, Redo Log์๋ ํด๋น Row ๋ด์ ์๋ ๋ชจ๋ Column ์ ๋ณด๊ฐ ๋ค ๋จ๋๋ก ํด์ค๋ค.
Target Database์ Apply ํ๋ก์ธ์ค๋ ์ด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๊ตฌ์ถํ๋ค. ๋ค๋ง ์ด๋ ๊ฒ ๋๋ฉด, Primary key ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ ์ด๋ธ ์ ์ฅ์์ ๋ถํ์ํ ๋ค๋ฅธ ์ปฌ๋ผ ์ ๋ณด๋ค์ Where Clause์ ์ ๋ ฅํด์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. Database์ ํ๋ ๋ณ๋ก ์ต์ ํ๋์ด ์ ์ฒ๋ฆฌ๋ ์๋ ์์ง๋ง, ๋ถํ์ํ ์ํฉ ์์ฒด๋ฅผ ๋ฐฉ์ดํ๊ธฐ ์ํด ProSync์์ Primary key๋ง ์ฌ์ฉํ ์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ด๋ฆฌํ๋ค.
USE_PK_FOR_WHERE
์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด Primary key๊ฐ ์๋ ํ
์ด๋ธ์ ๋ํ Update๋ Delete ์์ Where Clause์๋ Primary key๋ง ์
๋ ฅํ๊ฒ๋๋ค.
์ฃผ์
Data Conflict Rule(DCR) ๊ด๋ จ
์ต์
์ ์ฌ์ฉํ ๊ฒฝ์ฐ USE_PK_FOR_WHERE ์ต์
์ ๋ฌด์๋๋ค. ๋๊ธฐํ์ ๋
ผ๋ฆฌ ๊ตฌ์กฐ์ Conflict๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ฐ์ ์ด๊ธฐ ๋๋ฌธ์ ProSync์์ ๋ ์ต์
๊ฐ์ ์ด์ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๋๋ค.
์ปค๋ฐ์ด ์์ฒญ ํธ๋์ญ์ ์ ๋ฐ์์ ํ ์ ์์ผ๋ฉด ๋ฐ์์ ํ๊ณ , ๋ฐ์์ ํ ์ ์์ผ๋ฉด ํ์์ ๋๊ธฐํ๊ฒ ๋๋ค. ๋ฐ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ ๋ฐ์ํ๊ณ ์ ํ๋ ํธ๋์ญ์ ๊ณผ ๋ฐ์ ์ค์ธ ํธ๋์ญ์ ๊ฐ์ ์์กด์ฑ ์ฒดํฌ๋ฅผ ํตํด ์๋ก ๋ ๋ฆฝ์ ์ผ ๊ฒฝ์ฐ ๋ฐ์์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํ๋ค.
์์กด์ฑ ์ฒดํฌ๋ Table๊ณผ Row ๋จ์ ๋ชจ๋ ํ์ธ์ ํ๋ค. ํธ๋์ญ์ ์ ๋ ์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๋ ์ฝ๋์๋ ๋ ์ฝ๋๊ฐ ์ ๊ทผํ๋ Row๊ฐ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์, ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ํธ๋์ญ์ ๊ณผ ์์กด ๊ด๊ณ์ธ์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
์์กด์ฑ ํ์ธ ๋์์ RedBlack Tree(RBT)์ Linked List๋ก ๊ด๋ฆฌ๊ฐ ๋๊ณ ์๋ค. Table ๋จ์๋ก RBT๋ฅผ ํ์ธํ๊ณ , Table์ด ํ์ธ๋๋ฉด, ํด๋น Table ๋ ธ๋ ๋ด์ RBT์์ Row๋ฅผ ํ์ธํ๋ค. ์ด ์์น์ Linked List๊ฐ ์กด์ฌํ๋ฉฐ, ํธ๋์ญ์ ์ ํด๋น List์ ์์กด์ฑ ๊ฐ์ฒด(TX Dependency )๋ฅผ ๋ฌ์ ๋๋๋ค.
์ด ๋์์ ํตํด ํธ๋์ญ์ ์ด ์ ๊ทผํ๋ ๋ชจ๋ Row์ ๋ํ Linked List์ TX Dependency๊ฐ ๋ฑ๋ก์ด ๋๋ค. ๋ฐ์ ์ค์ธ ํธ๋์ญ์ ์ด๋ ๋ฐ์ ๋๊ธฐ ์ค์ธ ํธ๋์ญ์ ๋ชจ๋ ์ด ๊ตฌ์กฐ ์์์ ๊ด๋ฆฌ๋๋ค.
๋ฐ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ ํธ๋์ญ์ ์ ๋ชจ๋ TX Dependency๊ฐ Linked List์ front์ ์กด์ฌํ๋ ์ง์ ์ฌ๋ถ๋ก ํ์ธํ๋ค. ํ๋๋ผ๋ front์ ์กด์ฌํ์ง ์๋๋ค๋ฉด ๋ฐ์์ด ๋ถ๊ฐ๋ฅํ๊ณ , ์์ ๋ฐ์ ์ค์ธ ํธ๋์ญ์ ์ ์๋ฃ๋ฅผ ๋๊ธฐํ๊ฒ ๋๋ค.
๋ฐ์์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ ์์กด์ฑ ์ฒดํฌ๋ฅผ ํ์ ๋ Linked List ์์ TX Dependency ๊ฐ ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ์ด๋ค.
๋ง์ฝ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด xid: 111์ธ ํธ๋์ญ์ ์ด ์์ง ๋ฐ์์ด ๋๋์ง ์์๋ค๋ฉด ๋๊ธฐํ๊ฒ ๋๋ค. ๋ฐ์์ด ์๋ฃ๋ ํธ๋์ญ์ ์ ์ Linked list์์ ์ ๊ฑฐ๊ฐ ๋๊ณ , xid: 112๊ฐ ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ๋๋ฉด ๋ฐ์ ์์ ์ ์งํํ๋ค.
๊ด๋ จ ํ๋ผ๋ฏธํฐ๋ REPLAY_THREAD_CNT ๋ก, ํด๋น ๊ฐ์ด ์ฌ๋ผ๊ฐ๋ฉด ๋ณ๋ ฌ ์ธ์
์ ์๊ฐ ๋ง์์ง๋ค. ํ์ง๋ง ์ ๋ก์ง์์ ์ ์ ์๋ฏ์ด ๊ฒฐ๊ตญ RBT ๋ด์์ Table, Row๋จ์๋ก TX Dependency๊ฐ ์ ํ๋ ค์ผ ๋ณ๋ ฌ ๋ฐ์์ด ๊ฐ๋ฅํ๋ค. ์ด๋ก ์ธํด ์ซ์๋ฅผ ์ฌ๋ฆฐ๋ค๊ณ ๋ฐ๋์ ์ฌ๋ฆฐ ์ซ์๋งํผ ์ ๋น๋กํ๊ฒ ์ฆ๊ฐํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ๋ค.
MAP Rule์์ ์๊ฐํ Data Conflict Rule์ ์๋๋ฆฌ์ค๋ค์ ์ ๋ฆฌํ๋ค. ์ต์ ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ํด๋น ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ค.
Data Conflict๋ฅผ ํ์ธํ๋ ค๋ฉด Row๋ฅผ ํน์ ํ ์ ์์ด์ผ ํ๋ค. ProSync์์๋ ์ด์ ๋ํ ๊ธฐ์ค์ Primary key๋ก ๋๊ณ ์๋ค. Primary key ๋ก ์ธํด ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ, Source Database, Target Database, Column Min(Max) ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ Conflict์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๊ฒฐ์ ํ๋ค.
Insert๋ฌธ์์ ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ ๊ฒ์, ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋ผ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ Source Database ๊ธฐ์ค์ผ๋ก ๋ง์ถฐ์ฃผ์ด์ผ ํ๋ค.
Insert๋ฌธ์ Update๋ก ๋ณ๊ฒฝํ์ฌ Conflict ์ ํด์ํด์ค๋ค.
Update์์์ ๋ฐ์ดํฐ ์ถฉ๋์ ์ํ๋ Row๊ฐ ์๋ค๋ ์๋ฏธ์ด๋ค.
Update๋ฌธ์ Insert๋ก ๋ณ๊ฒฝํ์ฌ Conflict ์ ํด์ํด์ค๋ค.
Delete์์์ ๋ฐ์ดํฐ ์ถฉ๋ ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก Row๊ฐ ์๋ค๋ ์๋ฏธ๊ฐ ๋๋ค.
Delete์ ๋ํ ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ์์ด ๋์ด๊ฐ๋ฉด ๋๋ค.
Insert๋ฌธ์ ์ถฉ๋์ ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๋ฐ์ํ๋๋ฐ, Target Database ๊ธฐ์ค์ผ๋ก ๋ง์ถฐ์ผ ํ๋ฏ๋ก, ๋ณ๋์ ์์ ์์ด ํด๋น ์ฒ๋ฆฌ๋ฅผ ๊ฑด๋๋ด๋ค.
Row๊ฐ ์๋ ์ํฉ์ด ๋ง๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์์ ์์ด ํด๋น ์ฒ๋ฆฌ๋ฅผ ๊ฑด๋๋ด๋ค.
์ ๋ ๊ฒฝ์ฐ์ ๋ํ ์กฐํฉ์ผ๋ก ๋ณผ ์ ์๋ค. ์ํฉ์ ๋ฐ๋ผ Source ๊ธฐ์ค ๋๋ Target ๊ธฐ์ค์ ๋ง์ถฐ ์ํํ๋ ์๋๋ฆฌ์ค๋ค. ๊ธฐ์ค์ด ๋๋ ๊ฒ์ด Database ๋จ์๊ฐ ์๋ Column ๋ด ๋ฐ์ดํฐ์ ๋์ ๋น๊ต๋ก ์ด๋ฃจ์ด์ง๋ค๋ ์ ์ด ๋ค๋ฅด๊ณ , ์ด์ ๋ฐ๋ผ ์ถฉ๋ ์ฒ๋ฆฌ ๋์์ ์์ Source / Target๊ณผ ๋์ผํ๊ฒ ์๋ํ๋ค.
์ฃผ์
Data Conflict Rule(DCR) ๊ด๋ จ
Data Conflict Rule(DCR) ์ต์
์ ์ฌ์ฉํ ๊ฒฝ์ฐ USE_PK_FOR_WHERE ์ต์
์ ๋ฌด์๋๋ค. ๋๊ธฐํ์ ๋
ผ๋ฆฌ ๊ตฌ์กฐ์ Conflict๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ฐ์ ์ด๊ธฐ ๋๋ฌธ์ ProSync์์ ๋ ์ต์
๊ฐ์ ์ด์ ๊ฐ์ ์ฐ์ ์์๋ฅผ ๋๋ค.
ProSync๊ฐ ๋๊ธฐํ ๊ณผ์ ์์ DML์ Target DB์ ๋ฐ์ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ProSync๊ฐ ํด๋น DML์ ๋ํ ๋ฐ์์ ์ฑ๊ณตํ ๋ ๊น์ง ์ฌ์๋ํ๊ฒ ๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํน์ ํ ์๋ฌ์ ๋ํด ์ฌ์๋ํ๋ ๋์ ํด๋น DML์ ๋ํ ๋ฐ์์ ์๋ตํ๊ณ ์ดํ์ ๋๊ธฐํ๋ฅผ ์งํํ๋๋ก ์ค์ ํ ์ ์๋ค.
๋ํ DISCARD ๊ธฐ๋ฅ์ด ๋ฐ์ํ ์ด๋ ฅ์ ๊ธฐ๋กํ๋ Discard file ์ ์์ฑํ ์ ์๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์ config ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ Parameter๋ฅผ ์ค์ ํด์ผ ํ๋ค.
DISCARD_YN=[Y|N]
DISCARD_EC=2 10007 8033
DISCARD_FILE_YN=[Y|N]
DISCARD_FILE_DIR=/directory/to/save/file
DISCARD_FILE_SIZE=200M
DISCARD_BACKUP_DIR=/directory/to/save/backup/file
DISCARD_BACKUP_SIZE=10GDISCARD_YN
DDL๋ DML๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Target DB์ ๋ฐ์ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ProSync๊ฐ ํด๋น DDL์ ๋ํ ๋ฐ์์ ์ฑ๊ณตํ ๋ ๊น์ง ์ฌ์๋ํ๊ฒ ๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ฌ์๋ํ๋ ๋์ ํด๋น DDL์ ๋ํ ๋ฐ์์ ์๋ตํ๊ณ ์ดํ์ ๋๊ธฐํ๋ฅผ ์งํํ๋๋ก ์ค์ ํ ์ ์๋ค.
๋ํ DISCARD ๊ธฐ๋ฅ์ด ๋ฐ์ํ ์ด๋ ฅ์ ๊ธฐ๋กํ๋ Discard file ์ ์์ฑํ ์ ์๋ค.
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์ config ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ Parameter๋ฅผ ์ค์ ํด์ผ ํ๋ค.





DDL_DISCARD_FILE_SIZE
discard ํ์ผ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: int32
๋ฒ์: 1M - 1G
๊ธฐ๋ณธ๊ฐ: 100M
DDL_DISCARD_BACKUP_DIR
discard ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ค์ ํ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ฉด ์์ฑํ๋ ๋ฐฑ์ ํ์ผ์ ์์น๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: ๋๋ ํ ๋ฆฌ
๋ฒ์: -
๊ธฐ๋ณธ๊ฐ: "/"
DDL_DISCARD_BACKUP_SIZE
backup ๋๋ ํ ๋ฆฌ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: uint64
๋ฒ์: 0 - 128G
๊ธฐ๋ณธ๊ฐ: 0
๋๊ธฐํ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์คํตํ ์ง์ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค. Y ์ํ์์ ๋ฐ์ํ ์๋ฌ๊ฐ DISCARD_EC ์ ์์ฑ๋ ์๋ฌ์ฝ๋์ ์ํด์๋ ๊ฒฝ์ฐ ์ฌ์๋๋ฅผ ์๋ตํ๋ค.
์ ํ: Y/N
๋ฒ์: Y/N
๊ธฐ๋ณธ๊ฐ: N
DISCARD_EC
์ฌ์๋๋ฅผ ํ์ง ์๊ณ ๊ฑด๋๋ฐ๊ณ ์ ํ๋ ์๋ฌ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค.
์ ํ: ์๋ฌ์ฝ๋
๋ฒ์: ์ต๋ 256๊ฐ
๊ธฐ๋ณธ๊ฐ:
DISCARD_FILE_YN
DISCARD ๋์์ด ๋ฐ์ํ์ ๋ ํด๋น ๋ด์ฉ์ discard ํ์ผ์ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ํ๋ผ๋ฏธํฐ์ด๋ค.
์ ํ: Y/N, dynamic
๋ฒ์: Y/N
๊ธฐ๋ณธ๊ฐ: N
DISCARD_FILE_DIR
discard file์ ์ ์ฅ ์์น๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: ๋๋ ํ ๋ฆฌ
๋ฒ์: -
๊ธฐ๋ณธ๊ฐ: (LOG_DIR๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ)
DISCARD_FILE_SIZE
discard ํ์ผ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: int32, dynamic
๋ฒ์: 1M - 1G
๊ธฐ๋ณธ๊ฐ: 100M
DISCARD_BACKUP_DIR
discard ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ค์ ํ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ฉด ์์ฑํ๋ ๋ฐฑ์ ํ์ผ์ ์์น๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: ๋๋ ํ ๋ฆฌ
๋ฒ์: -
๊ธฐ๋ณธ๊ฐ: DISCARD_FILE_DIR/backup
DISCARD_BACKUP_SIZE
backup ๋๋ ํ ๋ฆฌ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: uint64, dynamic
๋ฒ์: 0 - 128G
๊ธฐ๋ณธ๊ฐ: 0(๋ฌด์ ํ)
DDL_DISCARD_YN
๋๊ธฐํ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์คํตํ ์ง์ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค.
์ ํ: Y/N
๋ฒ์: Y/N
๊ธฐ๋ณธ๊ฐ: N
DDL_DISCARD_FILE_YN
DISCARD ๋์์ด ๋ฐ์ํ์ ๋ ํด๋น ๋ด์ฉ์ discard ํ์ผ์ ๋จ๊ธฐ๋ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ํ๋ผ๋ฏธํฐ์ด๋ค.
์ ํ: Y/N
๋ฒ์: Y/N
๊ธฐ๋ณธ๊ฐ: N
DDL_DISCARD_FILE_DIR
์ฃผ์
DISCARD ๊ธฐ๋ฅ์ ํ์ฑํํ๋ฉด batch apply ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค.
DML์ ๋ฐ์ํ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋ํด์ ๋ง DISCARD ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
(12032)Deadlock detected. ์๋ฌ๋ DISCARD ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๋๋ค.
SAM_BIND_VALUE=Y ๋ฅผ ์ฌ์ฉํ๋ฉด, discard log์ ์คํจํ query์ value ๊ฐ์ด ํจ๊ป ์ ์ฅ๋๋ค.
์ฃผ์
๋จ, TABLE ๊ด๋ จ DDL์ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ผ๋ ์คํจํ๋ ๊ฒฝ์ฐ ์๋ตํ ์ ์๋ค.
discard file์ ์ ์ฅ ์์น๋ฅผ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ.
์ ํ: ๋๋ ํ ๋ฆฌ
๋ฒ์: -
๊ธฐ๋ณธ๊ฐ: "/"
DDL_DISCARD_YN=[Y|N]
DDL_DISCARD_FILE_YN=[Y|N]
DDL_DISCARD_FILE_DIR=/directory/to/save/file
DDL_DISCARD_FILE_SIZE=200M
DDL_DISCARD_BACKUP_DIR=/directory/to/save/backup/file
DDL_DISCARD_BACKUP_SIZE=10G
