복제는 주 서버의 변경 내용을 다른 서버가 따라가게 하는 방식입니다. 복제본으로 읽기를 분산하거나 장애 시 복구 경로를 마련할 수 있습니다.
데모는 로그 위치가 주 서버에서 복제본으로 뒤따라가는 모습을 보여줍니다. 비동기 복제에서는 잠시 다른 값이 보일 수 있어, 방금 쓴 데이터를 즉시 읽어야 하는 요청은 지연을 고려해야 합니다.
언제 쓰나
읽기 부하 분산이나 장애 복구가 필요할 때 복제 방식과 지연 허용치를 함께 정합니다.
주 서버의 변경을 복제본에 전달해 읽기와 복구에 활용합니다.
<div class="demo"><div class="head"><b>REPLICATION LOG</b><span id="lag">lag 2</span></div><div class="stage repl"><div class="server">primary<div class="cell">LSN 104</div></div><div class="wire">→</div><div class="server">replica<div class="cell" id="replica">LSN 102</div></div></div><div class="foot"><span id="replstatus">replaying log</span><span>async copy</span></div></div>*{box-sizing:border-box}.demo{width:min(96vw,820px);height:min(94vh,350px);padding:clamp(8px,2vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);display:flex;flex-direction:column;gap:clamp(5px,1.5vmin,12px);font:600 clamp(12px,3.5vmin,15px)/1.25 var(--font-sans),sans-serif;overflow:hidden}.head,.foot,.row{display:flex;justify-content:space-between;align-items:center;gap:8px}.head b{color:var(--accent)}.head span,.foot,.muted{color:var(--muted)}.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:8px}.cell,.pill{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(4px,1.2vmin,9px);text-align:center}.pill{border-radius:999px}.on{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 17%,var(--surface))!important;color:var(--fg)!important}.bad{border-color:#e16a5d!important;background:color-mix(in srgb,#e16a5d 18%,var(--surface))!important}.foot{font-size:clamp(12px,3vmin,14px)}.repl{justify-content:space-around}.server{display:grid;gap:8px;min-width:35%;text-align:center;color:var(--muted)}.server .cell{color:var(--fg)}.wire{color:var(--accent);font-size:clamp(20px,7vmin,34px)}let n=0;function tick(){let l=[102,103,104][n];document.getElementById('replica').textContent='LSN '+l;document.getElementById('replica').classList.toggle('on',n===2);document.getElementById('lag').textContent='lag '+(104-l);document.getElementById('replstatus').textContent=n===2?'caught up':'replaying log';n=(n+1)%3}tick();const t=setInterval(tick,900);document.querySelector('.demo').onclick=()=>{clearInterval(t);tick()}복제는 주 서버의 변경 내용을 다른 서버가 따라가게 하는 방식입니다. 복제본으로 읽기를 분산하거나 장애 시 복구 경로를 마련할 수 있습니다.
데모는 로그 위치가 주 서버에서 복제본으로 뒤따라가는 모습을 보여줍니다. 비동기 복제에서는 잠시 다른 값이 보일 수 있어, 방금 쓴 데이터를 즉시 읽어야 하는 요청은 지연을 고려해야 합니다.
읽기 부하 분산이나 장애 복구가 필요할 때 복제 방식과 지연 허용치를 함께 정합니다.