바다토리 웨어하우스
MSSQL 특정시간으로 복원하는 방법 본문
Database는 아무래도 방대한 많은 양의 자료가 있다 보니, DB를 다루다 보면
여간 신경이 곤두서는 게 아닐 수 없다.
특정 조건에 해당되는 데이터를 Update나 Delete를 하다 보면,
쿼리를 잘못 날려서 정말 내가 왜 이랬지 후회를 하며 머릿속이 하얘지는 경험은
한 번쯤은 있을 것이다.
실행을 하는 순간 뭔가 싸한 느낌.
그렇기 때문에 DB에 있어서 백업은 항상 필수이고, 아무리 강조해도 지나치지 않는다.
다음의 예를 보자.
테이블을 하나 만들고 데이터를 넣어 둔다.
조회를 해보면 5건의 데이터가 들어가 있는 것을 볼 수 있다.
백업을 주기적으로 잘하고 있다고 가정하고, 전체 Full 백업을 받는다.
잘 아시겠지만, 주 1회 전체 백업, 매일 차등 백업을 받도록 한다.
여기서 사용자가 실수로 Delet를 특정 조건에서 날려야 하는데, 전체로 잘못 날려버려
테이블의 모든 데이터가 사라졌다고 치자.
운영 중인 DB라면 데이터가 사라진 시점에도 계속해서 Data가 들어올 것이고, 또 전체 백업 이후에도 쌓인 데이터가 있을 것이기에 지난번에 백업으로 무조건 복원을 할 수가 없다.
자신이 Delete나 Update를 잘못한 시간을 기억해내 시점으로 복원을 하는 것이 그나마 피해를최소화하는 것이다.
자신이 뭔가 실수를 했다고 깨닫는 순간. 재빨리 해당 DB의 트랜잭션 로그 백업을 받는다.
우리는 이 트랜잭션 로그 백업을 받음으로써, 데이터가 잘못된 특정 시점 이전으로 복원을 할 것이기 때문이다.
트랜잭션 로그 백업이 완료가 되었으면, 이제 복원을 하도록 한다.
복원 메뉴를 선택하고, 지정시간을 가장 최근이 아닌, 특정 날짜 및 시간으로 선택을 한다.
그리고 만약 내가 1시 13분에 데이터 처리를 잘못했다면, 1시 12분으로 복구를 하는 것이다.
그러면, 전체 백업과 트랜잭션 로그 백업이 함께 나타나며, 해당 시간으로의 복구를 진행하게 된다.
여기서 주의해야 할 것은 복구는 무조건 원래의 DB가 아닌 별도의 DB로 만들어야 한다.
TEST DB가 원래의 DB명이었다면, TEST가 아닌 TEST_OLD 등 이름을 변경해서 별도의 DB로 복원을 하고,
사라진 데이터만 실제의 DB로 복구해주면 된다.
여기서 실제 DB로 복구를 하게 되면, 머릿속이 타임라인 계산으로 백지가 될 것이다.
요긴하게 알아 두었다가 사용하면 될듯하다.
'IT > mssql' 카테고리의 다른 글
MSSQL 일방향 암호화 방법 (0) | 2022.06.01 |
---|---|
MSSQL 백업 스케쥴 만들기 (0) | 2022.05.29 |
MSSQL administrator 계정을 삭제했을 때 해결방법 (0) | 2022.05.27 |
DB복원 후 원래 계정으로 로그인이 안될때 방법 (0) | 2022.05.26 |
1년 전체 주말 등록하는 쿼리 스크립트 (0) | 2022.05.24 |