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 파일 수정이 필요하다”
반응형
'spring boot' 카테고리의 다른 글
| "DTO 없이 Entity만 쓰면 안 되나요?" 실무 기준으로 답해드립니다. (1) | 2026.03.30 |
|---|---|
| Ubuntu(20.04)에서 Docker Spring Boot 앱 앞단에 Nginx 붙이기 (0) | 2026.03.27 |
| Ubuntu에서 Docker 기반 MySQL 환경 구성 및 운영하기 (0) | 2026.03.25 |
| Docker로 배포한 Spring 앱에서 첨부파일을 Ubuntu 디렉터리에 저장하는 방법 (0) | 2026.03.24 |
| react에서 구글로그인 구현-III(feat. spring) (1) | 2024.12.30 |