Written by coh at home
[DB] 백업 및 복원 고도화 본문
개요

목적
- 기존의 백업도구(mysqldump)는 데이터량에 따라 백업과 복원 시간이 선형적 혹은 그 이상으로 증가한다. 이를 개선한다.
- 백업과 복원이 얼마나 진행되었는지 정보를 제공한다.
- 백업과 복원에 대한 히스토리를 제공한다.
목표
- 백업과 복원 속도를 개선한다.
- 백업과 복원에 대한 정보를 제공한다.
배경
- DB의 메모리는 서버의 50%까지 사용한다.
- 서버의 하드디스크 크기는 1Tb이다.
운영환경
- DB에 5초마다 730건의 record가 insert가 되고 있다.
- 최초 풀백업 데이터량은 약 5억건이다.
- 이미지, 동영상 파일도 백업이 되어야한다.
테스트 환경
- 0.1초마다 730 record insert를 1000회 수행 후 증분백업 진행. (약 5000초 가정)
기존 시스템
우리의 DB에는 약 9억건의 데이터가 존재하는 DB가 있다. 이를 mysqldump로 풀백업 및 복원을 했을 때 시간은 다음과 같다.
- 백업 : 약 1시간
- 복원 : 약 14시간
이는 mysqldump의 특징으로 데이터의 양이 많을 수록 복원 성능이 무척 떨어진다. 이를 이해하기 위해선 논리적 백업과 물리적 백업에 대해 이해할 필요가 있다.
논리적 백업 vs 물리적 백업
- 논리적 백업 : 데이터를 sql문으로 저장한다. 실제로 mysqldump의 파일을 열어보면 insert로 백업이 되는 것을 확인할 수 있다.
- 물리적 백업 : 데이터 파일을 직접 복사한다. 따라서 백업된 파일의 크기가 DB의 크기와 비슷하다.
논리적 백업은 insert를 계속하게 되면 OS에서는 더티페이지가 쌓이게 되고 이것을 주기적으로 플러싱하는 과정이 발생하게 된다. 따라서 데이터양이 많을수록 복원시간은 선형시간보다 더 증가하게 된다.
물리적 백업은 데이터 파일을 직접 복사하다보니 백업 파일의 용량이 크다. 따라서 용량 관리가 필수적이다. 복원도 파일을 다시 복사하는 방식이다보니 백업 속도와 비슷하다.
각 백업 종류에 따른 풀백업 및 복원 시간 비교
| 9억건 | 논리적 백업 | 물리적 백업 |
|---|---|---|
| 백업시간 | 1시간 8분 | 57분 |
| 복원시간 | 14시간 52분 | 45분 |
'CS > DataBase' 카테고리의 다른 글
| [Real Mysql] 시스템변수 (0) | 2025.12.13 |
|---|