상세 컨텐츠

본문 제목

DB 데이터 복원과 작은 생각

Tech

by 이현철79 2021. 10. 29. 18:50

본문

데이터베이스를 운용하다 보면 어쩔 수 없이 데이터를 복원해야 하는 경우가 생긴다.

그 흔한 update 문부터 기타 DDL, rollback 할 수 없는 DML 까지 아찔한 경우가 종종 생기곤 한다.

우리와 같이 AutoCommit 이 활성화 되어 있는 서비스는 각별히 조심해야 한다.

AWS 는 주기적인 snapshot 처리를 할 수 있기 때문에 운이 좋다면 스냅샷을 통해 그 이전 데이터로의 복구가 가능하다는 얘기가 된다.

스냅샷은 심리적 안정을 위해 찍는 게 아니다. 써 먹어야지.

스냅샷에서 데이터를 꺼내오는 과정은 아래와 같다.

RDS 인스턴스 선택 → 특정 시점으로 복원 → 임시 RDS 인스턴스 생성 → 데이터 복구 → 확인 → 인스턴스 삭제

 

1. 데이터베이스 특정시점으로 스냅샷에서 복원

 

2. 인스턴스명을 달리하고 모든 설정은 기존 인스턴스와 동일하게 맞춰 줄 것. 스냅샷의 모든 내용이 옮겨지기 때문에 db schema 부터 row data 까지 모두 복원이 된다.

 

3. 복구하고자 하는 데이터를 상황에 맞게 옮긴 후, 인스턴스 삭제 처리! (비용)

 

4. 스냅샷 이후의 데이터 복구는 좀 더 복잡해진다. 이는 추후 논의해 본다.

 

 

그렇다면 애초에 안전장치를 하나 가져가 보는 것이 좋지 않을까!

AutoCommit=on 상태에서 조차 우리는 Transaction 을 활요할 수 있다!

BEGIN; 또는 START TRANSACTION; 을 통해 우리는 DBMS 에 명시적인 commit 또는 rollback 을 '니가 아닌 내가 처리할 것' 이라고 알려 줄 수 있다.

아래과 같이 쓰면 된다.

START TRANSACTION;
-- OR BEGIN;
-- DELETE ...
-- UPDATE ...
-- SELECT ...
COMMIT;
-- OR ROLLBACK;

 

DDL 처리를 하고 확인을 거친 후, 조심스럽게 commit 해도 늦지 않는다.

우리는 누구나 때때로 실수할 수 없으니 좀 귀찮지만, DDL 할 때는 무조건 이걸 쓰자.

자의든 타의든 실수로 인스턴스 새로 띄우고 복원하고... 그러는 동안 귀중한 시간이 날아간다.

 

 


IT기술을 통해
사람과 사람의 연결을 돕고
함께 성장해나가는
서비스를 만들어 갑니다.

브릿지코드(BRIDGE CODE)는 대기업 및 금융업 종사자들과 함께 시작, 팀은 웹 애플리케이션 개발에 대한 깊은 노하우를 보유중에 있습니다. 국내 리걸테크 및 핀테크 서비스를 제공하는 스타트업입니다. "사람과 사람의 연결"을 기술을 통해 만들어나가고 있습니다.

 

 

택슬리 바로가기

 

택슬리 :: SIMPLY.TAXLY

세금은 어렵지만 TAXLY는 쉬워요

taxly.kr

브릿지코드 바로가기

관련글 더보기

댓글 영역

페이징