spring boot

Docker 환경 MySQL 데이터 백업/복구 방법

hoazzinews 2026. 3. 25. 16:51

Docker + MySQL 데이터 백업/복구

Docker로 MySQL을 운영할 때는 데이터를 영구 저장 + 안전하게 백업/복구할 수 있는 전략이 중요합니다.
컨테이너는 삭제되면 내부 파일 시스템이 사라지므로, 반드시 볼륨 + 백업 전략을 함께 사용해야 합니다.


1. 데이터 백업

$ sudo docker exec mysql-team001 \
mysqldump -uroot -p1234 --databases team001_db > backup.sql
 
 

✔ 설명

  • mysqldump : 데이터베이스를 SQL 파일로 백업
  • team001_db : 백업 대상 DB
  • backup.sql : 호스트에 저장되는 백업 파일

2. 데이터 복원

 
$ sudo cat backup.sql | sudo docker exec -i mysql-team001 \
mysql -uroot -p1234 team001_db
 

✔ 설명

  • SQL 파일을 MySQL에 입력하여 데이터 복원
  • team001_db : 복원 대상 DB (미리 생성 필요)

주의사항

DB는 미리 생성해야 함

docker exec -it mysql-team001 \
mysql -uroot -p1234 -e "CREATE DATABASE team001_db;"
 
 

docker exec 사용 시 mysql 명령어 필수

잘못된 예

$sudo docker exec mysql-team001 team001_db -uroot -p1234
 
 

✔ 에러 발생:

executable file not found
 

올바른 예

docker exec mysql-team001 mysql -uroot -p1234 team001_db
 

3. 다른 DB로 복원하는 방법

✔ 1단계: backup.sql 수정 (DB 이름 변경)

 
$ sed -i 's/team001_db/team002_db/g' backup.sql
 

backup.sql 내부의 DB 이름을 모두 변경


✔ 2단계: 복원

$ sudo cat backup.sql | sudo docker exec -i mysql-team002 \
mysql -uroot -p1234 team002_db
 
 

(중요) DB 이름 변경 시 주의

  • SQL 파일 내부의 CREATE DATABASE, USE 구문 때문에
    원래 DB로 복원되는 문제 발생 가능
  • sed로 변경하거나, dump 전략을 조정해야 함

정리

“Docker MySQL 백업은 mysqldump, 복원은 mysql 명령으로 수행하며, DB 이름이 다르면 SQL 파일 수정이 필요하다”

 

 

 

 

 

 

 

 

반응형