/엔지니어/데이터베이스/MySQL/MariaDB 백업 · 복원 완전 가이드
데이터베이스중급UbuntuDebianCentOSRHELMySQLMariaDB백업

MySQL/MariaDB 백업 · 복원 완전 가이드

mysqldump를 활용한 논리 백업과 복원 절차, 자동화 스크립트, 바이너리 로그 기반 시점 복원까지 정리합니다.

mysqldump — 논리 백업

Bash
# 단일 DB 백업
mysqldump -u root -p mydb > mydb_backup.sql

# 압축 백업 (gzip)
mysqldump -u root -p mydb | gzip > mydb_$(date +%Y%m%d).sql.gz

# 전체 DB
mysqldump -u root -p --all-databases > all_backup.sql

# 구조만 (데이터 제외)
mysqldump -u root -p --no-data mydb > schema_only.sql

복원

Bash
# SQL 파일로 복원
mysql -u root -p mydb < mydb_backup.sql

# 압축 파일 복원
gunzip < mydb_backup.sql.gz | mysql -u root -p mydb

# DB가 없으면 먼저 생성
mysql -u root -p -e "CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p mydb < mydb_backup.sql

자동화 스크립트

Bash
#!/bin/bash
DB_USER="backup_user"
DB_PASS="your_password"
BACKUP_DIR="/var/backups/mysql"
RETENTION_DAYS=14

mkdir -p "$BACKUP_DIR"

DATABASES=$(mysql -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" \
  | grep -Ev "Database|information_schema|performance_schema|sys")

for DB in $DATABASES; do
  FILENAME="${BACKUP_DIR}/${DB}_$(date +%Y%m%d_%H%M%S).sql.gz"
  mysqldump -u"$DB_USER" -p"$DB_PASS" \
    --single-transaction \
    --routines \
    --triggers \
    "$DB" | gzip > "$FILENAME"
  echo "Backed up: $FILENAME"
done

find "$BACKUP_DIR" -name "*.sql.gz" -mtime +"$RETENTION_DAYS" -delete
echo "Backup complete: $(date)"
Bash
chmod +x /usr/local/bin/mysql-backup.sh

# 매일 새벽 3시 실행
echo "0 3 * * * root /usr/local/bin/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1" \
  > /etc/cron.d/mysql-backup

중요 옵션

옵션용도
--single-transactionInnoDB 일관성 있는 스냅샷 (잠금 없음)
--routines저장 프로시저, 함수 포함
--triggers트리거 포함
--hex-blobBLOB 데이터를 16진수로 (깨짐 방지)

Point-in-Time Recovery (바이너리 로그)

SQL
-- my.cnf에서 바이너리 로그 활성화
-- log_bin = /var/log/mysql/mysql-bin.log
-- binlog_format = ROW

-- 현재 바이너리 로그 위치 확인
SHOW MASTER STATUS;
Bash
# 특정 시점까지 복원
mysqlbinlog \
  --start-datetime="2024-01-15 10:00:00" \
  --stop-datetime="2024-01-15 11:30:00" \
  /var/log/mysql/mysql-bin.000001 | mysql -u root -p mydb
#MySQL#MariaDB#백업#복원#DBA
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서MySQL 공식 매뉴얼

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.