데이터베이스는 서비스에서 가장 중요한 자산으로 예기치 못한 데이터 유실을 방지하기 위해 반드시 주기적으로 백업해야 합니다. 이번 포스팅에서는 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 데이터베이스의 보호를 위한 강력한 도구입니다. 반드시 주기적으로 백업하고, 복구 테스트를 통해 백업된 파일의 유효성을 검증하는 것을 추천합니다.