Database

RDBMS의 백업 및 복구에 대한 연구 - (1) 기본 개념

devMarco 2018. 7. 3. 16:49

RDBMS의 백업 및 복구에 대한 연구 - (1) 기본 개념


백업이란 무엇인가?

데이터베이스에 문제가 생길 것을 대비하여,
DB의 데이터(스키마 및 테이블 등)의 사본을 따로 저장해두는 것

복구란 무엇인가?

DB의 저장해둔 백업 데이터를 이용하여 DB를 원래 상태로 되돌리는 것

참고 - 복원과 복구는 약간 다른 개념이다.
복원은 지정해둔 백업으로 전체 데이터를 되돌리는 것이다.
내가 원해서 하는 것이고, 핸들할 수 있다는 의미가 담겨 있다.

복구는 '데이터 손실'이 발생했을 때 백업으로 데이터를 되돌리는 것이다.
뭔가 재해가 생겼을 때 되돌리는 것이며, 모든 데이터의 온전함을 보장할 수는 없다.
(손실 정도와 DB 성능에 따라 다르겠지만)


왜 백업 및 복구를 검토하게 되었는가?


게임 DB에는 회원 정보, 게임 캐릭터, 골드, 아이템 등 중요한 정보가 저장된다.

특히 게임 캐릭터, 골드, 아이템 데이터의 경우,
데이터가 손실된다면 유저가 게임을 즐겁게 플레이할 수 없을 것이다.

게임 데이터의 무결성을 보장하기 위해서는,
DB에 문제가 발생했을 때, DB의 데이터들과 트랜잭션 기록을 복구해내는 기능이 필요하다.

그래서 DB에서의 백업과 복구 기능을 검토하기로 하였다.

DB의 백업과 복구는 어떻게 이루어지는가?


  • 백업은 물리적 백업과, 논리적 백업이 있다.

물리적 백업은, DB의 데이터 사본을 파일로 만들어 저장 매체에 저장하는 것이다.

논리적 백업은, 테이블, 인덱스, 시퀀스 등 DB의 논리적 단위를 백업하는 것이다.
mysqldump로 import-export 기능을 사용한 케이스가 되겠다.

백업 / 복구 속도는 물리적 백업이 빠르다. 
논리적 백업은 파일을 논리 구조로부터 복구해야 되기 때문일까?

-> DB의 논리적 구조, 물리적 구조에 대한 개념 정리 필요(아래에서 정리)

  • 백업은 온/오프라인으로 선택하여 진행할 수 있다.

온라인 백업은 핫 백업이라고도 한다. 서버가 뜨거울 때도 백업이 된다는 의미.

아카이브 로그 모드가 켜져 있을 때만 가능하다.
(Archive log mode : 리두 로그를 다른 디렉토리에 따로 저장하여, 리두 로그를 보존하는 것,
이것이 켜져있지 않으면 리두 로그를 저장할 공간이 모자라서 리두 로그를 많이 보관할 수 없다.)

오프라인 백업은 콜드 백업이라고도 한다. DB 서비스를 멈추고 백업이 가능하다.

  • 이 외에도 로컬/리모트(이 서버에? 저 서버에?), 스냅샷, 전체와 일부에 대한 백업 등이 있다.

DB의 논리적 구조, 물리적 구조는 무엇인가?

논리적 구조 / 물리적 구조(logical / physical storage structure)라는 용어는 현재
오라클 DB에서만 사용하는 개념임을 확인하였다. (왜 다른 DB에서는 사용하지 않는거지?)
-> DB 설계에서도 논리적 설계, 물리적 설계가 있는데 이와 연관되지는 않을까?
  • DB의 논리적 구조
우리가 개념적으로 이해하고 있는 DB를 생각해보면 된다. 스키마, 테이블, 인덱스 등 
DB를 구성하는 컴포넌트들이 모여서 DB의 논리적인 구조를 이룬다.
  • DB의 물리적 구조
DB의 논리적 구조들은, 실제로는 코드로 구현하여 DB를 돌리는 컴퓨터의 저장 매체에 파일로 저장할 것이다.
이렇게 컴퓨터에 DB가 물리적으로 저장되면서 물리적 구조를 이룬다.