백업과 복구 개요

백업과 복구 개요

데이터는 언제 사라질지 모르니 백업은 선택이 아니라 필수예요. 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 도구로, 백업·복원 기능을 시각적으로 제공해요.

더 알아보기