백업과 복구 개요
백업과 복구 개요
데이터는 언제 사라질지 모르니 백업은 선택이 아니라 필수예요. MariaDB 문서는 백업을 크게 두 갈래로 설명해요. 로직 백업(logical backup)과 물리 백업(physical backup)이죠. 어떤 차이가 있는지, 어떤 도구로 하는지, 그리고 백업 후 복구는 어떻게 준비하는지 중심으로 정리할게요.
출처: https://mariadb.com/docs/server/server-usage/backup-and-restore/backup-and-restore-overview
로직 백업 vs 물리 백업
- 로직 백업 — 데이터를 복원하는 데 필요한 SQL 문장들(
CREATE DATABASE,CREATE TABLE,INSERT)로 구성돼요. - 물리 백업 — 개별 데이터 파일이나 디렉토리를 통째로 복사하는 방식이에요.
주요 차이점은 다음과 같아요.
- 로직 백업은 다른 하드웨어 구성, 다른 MariaDB 버전, 심지어 다른 DBMS로도 복원할 수 있어 더 유연해요. 물리 백업은 크게 다른 하드웨어·다른 DBMS·다른 MariaDB 버전에는 못 가져와요.
- 로직 백업은 데이터베이스·테이블 단위로 할 수 있는 반면, 물리 백업은 디렉토리·파일 단위예요. MyISAM과 InnoDB에서는 각 테이블이 파일 집합에 대응돼요.
- 로직 백업은 같은 내용의 물리 백업보다 파일 크기가 더 커요.
- 로직 백업은 백업·복원 모두 물리 백업보다 시간이 더 걸려요.
- 로그 파일과 설정 파일은 로직 백업에 포함되지 않아요.
백업 도구
mariadb-backup
mariadb-backup은 물리 온라인 백업 도구로, Percona XtraBackup의 포크예요. 압축과 데이터 암호화(at-rest) 지원이 추가됐어요. MariaDB Server 데이터 디렉토리에서 파일 레벨 백업을 만들어요.
MariaDB Server는 다음 백업 유형을 지원해요.
- 전체 백업(Full) — 데이터베이스의 모든 데이터를 담아요.
- 증분 백업(Incremental) — 마지막 백업 이후의 변경분을 담아요.
- 부분 백업(Partial) — 데이터베이스의 테이블 일부만 담아요.
백업 지원은 스토리지 엔진마다 달라요. 모든 지원 엔진이 전체 백업을 할 수 있고, InnoDB는 추가로 증분 백업을 지원해요.
복구 이해하기: --prepare 명령으로 백업을 특정 시점 일관성(point-in-time consistent) 있게 준비해야 해요. 전체 백업에 --prepare를 돌리면 테이블스페이스를 동기화하고, 증분 백업에 돌리면 변경분을 이전 전체 백업에 적용해요. 준비되지 않은 원시 전체 백업을 복원하면 InnoDB가 데이터 보호를 위해 크래시하는데, 이는 정상 동작이에요.
복원은 빈 데이터 디렉토리에서: --copy-back 또는 --move-back으로 복원할 때는 데이터 디렉토리가 비어 있어야 해요.
전용 백업 사용자 생성: 백업 중 서버가 파일을 쓰는 걸 막기 위해 전용 사용자를 만들어 권한을 주는 걸 권장해요.
CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY 'mbu_passwd';
GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR
ON *.* TO 'mariabackup'@'localhost';
mariadb-dump
mariadb-dump(예전 mysqldump)는 로직 백업을 수행해요. 가장 유연한 백업·복원 방식이고, 데이터 크기가 상대적으로 작을 때 좋은 선택이에요. 데이터를 SQL 형식으로 덤프하며, CSV·XML 같은 다른 형식도 가능해요. 버전·DBMS 특정 문장만 없다면 다른 MariaDB·MySQL 버전, 심지어 다른 DBMS로도 가져올 수 있어요.
mariadb-dump db_name > backup-file.sql # 특정 DB 백업
mariadb db_name < backup-file.sql # 복원/로드
mariadb-dump는 테이블 정의의 일부인 트리거도 함께 덤프해요. 다만 저장 프로시저·뷰·이벤트는 따로 파라미터(--routines, --events)를 줘야 명시적으로 재생성돼요.
mariadb-hotcopy / Percona XtraBackup / 기타
mariadb-hotcopy는 물리 백업을 수행하며, MyISAM과 ARCHIVE 테이블만 백업할 수 있어요. 데이터베이스 디렉토리가 있는 같은 머신에서만 실행 가능해요.- Percona XtraBackup은 MariaDB에서 지원되지 않아요.
mariadb-backup이 권장 대안이에요. - 파일시스템 스냅샷(LVM 등) — 특정 파일시스템이 스냅샷을 지원할 때 쓸 수 있는 물리 백업이에요. 다만 LVM 스냅샷은 "데이터베이스 눈이 없는" 블록 레벨 방식이라, 버퍼를 플러시하고 테이블을 잠그지 않으면 페이지가 찢어지고 영구 손상될 수 있어요. 애플리케이션 인지 도구(예:
mariadb-backup)를 쓰는 게 안전해요. - dbForge Studio for MySQL — MariaDB와 완전 호환되는 GUI 도구로, 백업·복원 기능을 시각적으로 제공해요.
더 알아보기
- mariadb-backup 문서: https://mariadb.com/docs/server/server-usage/backup-and-restore/mariadb-backup
- mariadb-dump 문서: https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump
- 백업 전략 구성하기: https://mariadb.com/docs/server/server-usage/backup-and-restore/forming-a-backup-strategy