콘텐츠로 건너뛰기

MySQL 백업 및 복구 : mysqldump를 활용한 데이터 보호

데이터베이스는 서비스에서 가장 중요한 자산으로 예기치 못한 데이터 유실을 방지하기 위해 반드시 주기적으로 백업해야 합니다. 이번 포스팅에서는 mysqldump를 사용하여 MySQL 백업 및 복구 방법에 대해서 알아보도록 하겠습니다.

mysqldump란?

mysqldump는 MySQL에서 기본으로 제공하는 Command Line 기반 백업 도구입니다. 이 도구를 사용하여 원하는 데이터베이스의 데이터와 스키마를 텍스트 형식(SQL Script)으로 내보낼 수 있으며, 이를 통해 데이터베이스를 복구하거나, 데이터를 다른 서버로 이동할 수 있습니다.

mysqldump 설치 및 확인

mysqldump는 MySQL 클라이언트에 포함되어 있습니다. 글만약 MySQL이 설치가 안되어 있으면, MySQL 다운로드 페이지에서 원하는 버전을 다운로드 하여 설치하면 됩니다.

아래 명령어로 프로그램 설치 여부를 확인할 수 있습니다.

mysqldump --version

MySQL 백업 및 복구

MySQL 백업 및 복구 방법에 대해서 알아보겠습니다.

MYSQL 백업

단일 데이터베이스 백업

보통 단일 데이터베이스를 백업하기 때문에, 아래 명령을 사용하여 백업할 수 있습니다.

mysqldump -u [사용자명] -p [데이터베이스명] > [백업파일명].sql

# 예시
mysqldump -u root -p my_database > my_database_backup.sql

만약 원격지에 있는 데이터베이스를 백업하기 위해서는 -h 옵션을 추가하여 백업을 할 수 있습니다.

mysqldump -u [사용자명] -h [호스트] -p [데이터베이스명] > [백업파일명].sql

전체 데이터베이스 백업

서버에 있는 모든 데이터베이스를 백업하려면 --all-databases 옵션을 사용합니다.

mysqldump -u [사용자명] -p --all-databases > [백업파일명].sql

특정 테이블만 백업

특정 테이블만 선택적으로 백업할 수도 있습니다.

mysqldump -u [사용자명] -p [데이터베이스명] [테이블명1] [테이블명2] > [백업파일명].sql

기타 백업 옵션

백업 시 다양한 옵션이 존재합니다. 그 중 많이 사용하는 옵션은 다음과 같습니다.

  • –add-drop-database: 복구 시 기존 데이터베이스를 삭제하고 새로 생성합니다.
  • –add-drop-table: 복구 시 기존 테이블을 삭제하고 새로 생성합니다.
  • –routines: 저장 프로시저(Stored Procedure) 함수를 백업합니다.
  • –events: 이벤트 스케줄러를 백업합니다.

더 자세한 옵션은 MySQL 매뉴얼을 참고하면 됩니다.

MySQL 복구

백업한 파일을 사용해 데이터베이스를 복구하는 방법은 다음과 같습니다.

단일 데이터베이스 복구

아래 명령어로 단일 데이터베이스 백업 파일을 복구합니다.

mysql -u [사용자명] -p [데이터베이스명] < [백업파일명].sql

# 예시
mysql -u root -p my_database < my_database_backup.sql

전체 데이터베이스 복구

전체 데이터베이스 백업을 복구하려면 아래와 같이 사용합니다.

mysql -u [사용자명] -p < [백업파일명].sql

# 예시
mysql -u root -p < all_databases_backup.sql

백업 스크립트

아래는 정기적으로 MySQL 백업을 수행하는 간단한 Bash 스크립트입니다. 해당 파일을 cron에 등록하여 정기적으로 백업하는 것을 추천합니다.

#!/bin/bash
# MySQL 백업 스크립트

# 설정
USER="root"
PASSWORD="your_password"
DATABASE="my_database"
BACKUP_DIR="/path/to/backup"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/${DATABASE}_backup_$DATE.sql"

# 백업 실행
mysqldump -u $USER -p$PASSWORD $DATABASE > $BACKUP_FILE

# 결과 확인
if [ $? -eq 0 ]; then
  echo "백업 성공: $BACKUP_FILE"
else
  echo "백업 실패"
fi

마치며

mysqldump는 MySQL 데이터베이스의 보호를 위한 강력한 도구입니다. 반드시 주기적으로 백업하고, 복구 테스트를 통해 백업된 파일의 유효성을 검증하는 것을 추천합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

목차 보기