-
MariaDB의 백업과 복구DBMS(MariaDB, PostgreSQL) 2026. 5. 28. 16:32
안녕하세요 (주)제스트정보기술 입니다!
백업의 중요성은 따로 말하지 않아도 잘 알고 계실텐데요.
정전 등의 재해나 작업자의 실수 등으로 데이터가 잘못되거나,
데이터 파일에 손상이 생기는 등 복구가 필요한 상황이 발생할 수 있습니다.
작업자의 실수인 경우 트랜젝션 단위로 롤백이 가능한 경우에는 크게 문제가 없지만,
redo(innodbredo log)나 undo 등의 설정이 충분하지 않아 롤백이 불가능한 경우에는
백업본을 통한 복구를 진행하게 됩니다.
이외에도 전원이나 디스크 연결 문제로 데이터 파일에 문제가 생겨
정상적인 기동이 불가능한 상황도 예를 들 수 있겠습니다.
이러한 장애 상황들에 대비하여 데이터베이스를 정상적으로 재기동시킬 수 있도록,
장애 발생 전의 데이터를 최대한 보존할 수 있도록 우리는 언제나 백업에 관심을 기울여야 합니다.
따라서 오늘은 MariaDB의 백업과 복구에 대해 간단하게 알아보는 시간을 가지도록 하겠습니다.
# MariaDB의 백업. 논리적 백업 VS 물리적 백업.
MariaDB는 설치 시에 기본적으로 논리적 백업과 물리적 백업을 위한 명령어를 모두 포함하고 있습니다.
yum이나 rpm 등 자동 설치 시에는 `/usr/bin/` 경로 아래, 수동 설치 시에는 설치 홈 경로의 bin 디렉토리 아래에서
dump나 backup의 키워드로 찾아 보실 수 있습니다.


각 유틸리티는 버전이 올라가면서 점점 mysql 기반의 네이밍에서 mariadb 기반의 네이밍으로 대체되어가고 있기 때문에 사용하시는 버전에 따라 알맞은 명령어를 사용하시길 바랍니다.
논리적 백업과 물리적 백업은 동작 원리와 활용 목적이 다르기 때문에,
상황에 따라 알맞은 방식을 선택하는 것이 중요합니다.
구분논리적 백업물리적 백업도구mariadb-dumpmariadb-backup백업 결과물SQL 텍스트 파일데이터 파일 복사본백업 속도느림빠름버전/OS 간 이식성높음낮음(동일버전 권장)운영 중 백업(online 여부)가능(테이블 락 발생 가능)가능(온라인 백업 지원)권장 규모소~중규모중~대규모# 논리적 백업 : mariadb-dump(구 mysqldump)
## 논리적 백업이 필요한 경우
논리적 백업은 데이터베이스의 구조(DDL)와 데이터(DML)를 SQL 문장 형태로 추출하는 방식이며,
주로 아래와 같은 상황에서 활용됩니다.
1. 소규모 DB의 정기 백업
2. MariaDB의 버전업그레이드 전/후 데이터 이전
3. 다른 DBMS로의 마이그레이션에 활용.
4. 특정 테이블이나 데이터베이스만 선택적으로 백업/복구가 필요한 경우
5. 개발/테스트 환경에 운영 데이터를 부분적으로 이관할 때
## 사용 방법(백업 명령어)
mariadb-dump는 명령어 수행 시 바로 실행되며, 결과물로 SQL 파일이 생성됩니다.
# 기본 문법 mariadb-dump [옵션] [데이터베이스] > 출력파일명.sql # 예시 1. 전체 데이터베이스 백업 mariadb-dump -u root -p --all-databases > all_db.sql 2. 특정 테이블만 백업 mariadb-dump -u root -p testdb testtable > testtable.sql # InnoDB 환경에서 일관된 백업 (권장 옵션) mariadb-dump -u root -p --single-transaction --routines --events testdb > testdb.sql > --single-transaction 옵션은 InnoDB 테이블에 대해 트랜잭션을 열어 일관된 스냅샷을 유지하므로, > 백업 중 테이블 잠금 없이 서비스를 유지할 수 있어 운영 환경에서 권장됩니다.## 복구 방법
mariadb-dump로 생성된 SQL 파일은 MariaDB 클라이언트로 직접 실행하여 복구합니다.
1. 특정 데이터베이스 복구 mariadb -u root -p [데이터베이스명] < mydb_backup.sql 2. 전체 백업 복구 mariadb -u root -p < all_db.sql > 복구 대상 데이터베이스가 존재하지 않는 경우, 사전에 `CREATE DATABASE` 로 생성 후 진행합니다. > --all-databases 옵션으로 백업한 파일에는 `CREATE DATABASE` 구문이 포함되어 있습니다.## 논리적 백업의 장점
- 사용법이 간단함.
- 결과가 SQL파일로 생성되기 때문에 텍스트 편집기를 통해 내용 확인 및 수정이 가능.
- 특정 테이블, 데이터베이스 단위의 선택적 백업/복구가 가능.
- MariaDB의 버전이나 OS 가 달라도 복구가 가능.
## 논리적 백업의 단점
- 데이터량이 많을수록 백업/복구에 소요되는 시간이 오래 걸림.
- 복구 시 SQL을 재실행하는 방식이므로 대용량 환경에서는 복구 시간이 매우 길어질 수 있음.
- InnoDB 이외 엔진을 사용하는 테이블의 경우 --single-transaction 옵션이 적용되지 않아 Lock 발생 가능.
# 물리적 백업 : mariadb-backup
## 물리적 백업이 필요한 경우
물리적 백업은 MariaDB의 데이터 파일 자체를 복사하는 방법으로 XtraBackup을
기반으로 하는 도구이며,
주로 아래와 같은 상황에서 활용됩니다
1. 대용량 DB의 정기 백업
2. 서비스 중단 없이 빠른 백업이 필요한 경우
3. Galera Cluster에 노드 추가 시 초기 데이터 동기화에 활용(SST 방식)
4. 빠른 복구가 필수적인 환경
## 사용 방법 (백업 명령어)
mariadb-backup은 백업 -> prepare -> 복구 의 3단계로 진행됩니다.
# 1단계 : 백업 수행 mariadb-backup --backup --target-dir=[백업경로] --user=root --password=[패스워드] # 2단계 : *중요* Prepare(준비) 수행 - 백업 파일에 redo(innodb redo log)를 적용하여 트랜잭션을 정리하고 일관된 상태로 만드는 과정입니다. mariadb-backup --prepare --target-dir=[백업경로]* prepare 단계를 수행하지 않으면 복구 후 DB가 정상적으로 기동되지 않습니다.
## 복구 방법
복구 전 기존 데이터 디렉토리를 지우거나 이동 또는 디렉토리명 변경 후 진행합니다.
# 기존 데이터 디렉토리명 변경(DB 정지상태) mv /data/mysql /data/mysql_crash # 비어있는 데이터 디렉토리 생성 mkdir /data/mysql # 백업 데이터 복사 maraidb-backup --copy-back --target-dir=[백업경로] --datadir=/data/mysql # 소유권 정리 chown -R mysql:mysql /data/mysql # DB 기동 후 서비스 확인## 물리적 백업의 장점
- 대용량 DB도 빠르게 백업/복구 가능.
- 서비스 운영 중 온라인 백업 지원 (InnoDB 기준 락 없음)
- 갈레라 환경에서 SST 방식으로 활용 가능
- 증분백업 지원으로 스토리지 절약 가능
## 물리적 백업의 단점
- mariadb-dump에 비해 사용법이 복잡함
- 백업본이 바이너리 파일이므로 내용 확인이나 수정 불가
- 동일하거나 호환되는 버전에서만 복구 가능.
- 백업 파일 크기가 실제 데이터 크기와 유사하기 때문에 디스크 사용량이 큼.
# 마무리
여기까지 MariaDB의 백업 방식과 백업본을 활용한 복구 방법에 대해서 알아보았습니다.
바이너리 로그를 활용한 PITR과 같이 더 세밀한 복구 방법도 있지만,
항상 기본적인 백업이 반드시 선행되어야 한다는 점이 중요합니다.
또한 백업이 제대로 수행 된 것인지 확인하고 복구가 정상적으로 되는 지 검증하기 위해
복구 테스트를 꼭 진행해보시길 권장드립니다.
사진 삭제
AI 활용 설정
사진 설명을 입력하세요.
<제스트정보기술 기술지원>
제스트정보기술은 20년 이상의 WEB/WAS 기술지원 경험과 노하우를 바탕으로
고객의 상용소프트웨어(JEUS, WebLogic, JBoss EAP, Oracle DB 등)에 소요되는
획기적인 비용절감과 시스템 서비스의 성능을 전반적으로 개선하여
기술지원, 컨설팅을 제공하고 있습니다.
오픈소스 기반의 SW 설치 및 구성 , 시스템 구축 이후 케어팩(Care Pack)
서비스를 통하여 기존 고비용에 따른 상용 SW 운영 비용의 획기적인 절감은 물론,
고객의 운영 시스템을 안정적으로 지원하기 위한 서비스를 제공하고 있습니다.
제스트정보기술서울특별시 금천구 디지털로 121
'DBMS(MariaDB, PostgreSQL)' 카테고리의 다른 글
MariaDB 복제 구성 별 복제 상태 확인 방법 (Replication, Galera) (1) 2026.06.09 은행은 왜 ‘무료 DB’를 쓰지 않을까? (1) 2026.04.13 PostgreSQL 3편. 논리적 구조와 물리적 구조의 상관관계 (0) 2026.02.06 PostgreSQL 2편. 물리적 구조 (0) 2025.12.16 PostgreSQL 1편. 논리적 구조 (0) 2025.12.08