고객사에 확인용 개발 서버에 솔루션 설치시 DB를 어떻게 동일하게 설치해야되는지 찾다가 ddl과 백업에 대한 차이를 찾아보았다.
DBeaver에서 DDL을 뽑는 것(Generate DDL)과 백업(Backup)은 결과물과 목적에서 명확한 차이가 있어,
상황에 맞게 어떤 것을 써야 할지 이해하기 쉽도록 핵심 차이 밒 용도 정리를 하였다.
1. DDL 추출 (구조만 뽑기)
- 무엇을 뽑나? 테이블, 시퀀스, 뷰 등을 생성하는 SQL 문장(텍스트)만 뽑아냅니다. (데이터는 전혀 포함되지 않음)
- 파일 형태: 순수 텍스트 형태의 .sql 파일
- 주요 용도:
- 테이블 구조(틀)만 새로 만들 때
- 형상 관리(Git 등)에 스키마 정의서를 코드로 남겨둘 때
- 데이터 없이 빈 껍데기 환경을 똑같이 복제할 때
- 특징: 파일 용량이 매우 작고, 텍스트 편집기(메모장 등)로 열어서 내용을 직접 수정하거나 확인할 수 있습니다.
2. 백업 (Backup / Dump)
- 무엇을 뽑나? 테이블 구조(DDL)뿐만 아니라 실제 데이터(Row 데이터)까지 통째로 압축해서 뽑아냅니다.
- 파일 형태: 사용자 정의 포맷(.sql, 커스텀 압축 파일 등)
- 주요 용도:
- 운영 중인 DB를 통째로 이관하거나 완벽하게 복제할 때
- 장애 발생 시 복구를 위한 스냅샷을 남겨둘 때
- 특징: 데이터 양이 많으면 파일 용량이 커지며, 텍스트로 바로 읽기보다는 전용 복원 명령어(pg_restore)나 툴을 통해 DB에 밀어 넣는 방식으로 사용합니다.
요약 비교
| 구분 | DDL 추출 (Generate DDL) | 백업 (Backup) |
| 포함 내용 | 구조(테이블, 시퀀스 등 뼈대)만 | 구조 + 실제 데이터 모두 |
| 파일 포맷 | 순수 텍스트 (.sql) | 압축/덤프 포맷 |
| 버전 충돌 여부 | 없음 (텍스트 복사라 버전 타지 않음) | 있음 (pg_dump 버전이 서버와 안 맞으면 에러 발생 가능) |
| 언제 쓸까? | 뼈대만 똑같이 만들거나, 인터넷 안 되는 곳에 스크립트로 밀어 넣을 때 | 데이터까지 포함해서 DB를 완벽히 통째로 옮길 때 |