데이터베이스 백업의 종류

kakasoo·2021년 9월 6일
0

개발자가 쉰다고 해서 데이터가 쌓이는 게 멈추지는 않는다. 데이터는 여전히, 월요일부터 일요일까지 데이터가 꾸준히 쌓일 것이다. 이런 데이터는 백업해둬야 한다. 그렇지 않으면 데이터베이스가 손상되기라도 하면 회사는 사업을 접어야 할 테니깐.

데이터베이스가 몇 개 필요하고, 어떤 전략으로 백업해야 하는가, 그런 얘기를 하기 전에, 백업이 어떤 방식들이 있는지 말해보자.

전체 백업 (Full Backup)

일요일이 된 시점, 월요일과 일요일 사이의 데이터들을 백업해둘 필요가 있다.
이 때 우리는, 날마다 백업해둘 수 있다. 이름 그대로 이것을 전체 백업 (Full Backup) 이라고 부른다.
데이터가 정량적으로 늘어난다고 할 때, 월요일은 1개, 화요일은 2개, 수요일은 3개, 이런 식으로 각각의 날의 데이터들을 백업해두면 된다.
파일의 크기가 크다는 단점이 있지만 복구에 들어가는 시간은 역으로 가장 짧다.
마치 배열의 인덱스로 바로 접근하듯이, 돌아가고자 하는 시간만 지정하면 되기 때문이다.

차등 백업 (Differential Backup)

하지만 생각해보면 월요일은 굳이 백업해둘 필요가 없을 수도 있다.
아니, 일요일과 수요일의 차이를 백업하려는 거면 목요일은 1개, 금요일은 2개, 이런 식일 수도 있다.
어떤 날짜끼리의 데이터를 백업하느냐에 따라서 백업할 데이터는 많을 수도, 적을 수도 있다.
이런 방식의 바로 차등 백업(Differential Backup) 이다.
날마다 백업할 게 아니라면, 이렇게 특정 날짜끼리의 차이를 백업해두는 게 나을 수도 있다.

증분 백업 (Incremental Backup)

마지막은 증분 백업(Incremental Backup) 이다. 증가한 양만을, 백업해두는 방식이다.
일요일의 데이터를 알고 싶다면, 월요일부터 화,수,목,금,토의 데이터들을 합해나가면 된다.
역으로 추적해야 하는 만큼 백업에 들어가는 시간은 길 수 있지만, 파일의 크기는 가장 작다.
반대로 위험도 있다.
중간에 하나라도 소실될 경우, 일요일을 알 방법이 전혀 없는 것이다.

데이터베이스는 아니긴 하지만, git에서도 add, commit한 파일들의 로그를 위 형태처럼 관리한다.

profile
자바스크립트를 좋아하는 "백엔드" 개발자

0개의 댓글