내 지식 정리/날것 그 자체
[DB-MySQL] MySQL Docker 마운트, 개발(WSL)과 운영 환경(Rock-5c) 고려한 데이터 경로 설정 (feat. ChatGPT)
공부하는 모도리
2025. 3. 16. 16:29
728x90
반응형
MySQL 데이터를 마운트할 때, 로컬 개발 환경(Windows + WSL) 과 운영 환경(Rock-5C, Linux 기반) 에서 자주 사용하는 경로는 다를 수 있습니다.
각 환경에 맞춰 최적의 데이터 마운트 경로를 정리해드릴게요.
✅ 개발 환경 (Windows + WSL)
Windows에서 Docker를 사용할 때 볼륨 마운트 경로는 WSL과의 호환성을 고려해야 합니다.
1️⃣ WSL 내부 디렉토리 사용 (추천)
가장 일반적으로 사용되는 경로:
-v ~/mysql-data:/var/lib/mysql
- ~ (/home/사용자) 아래에 mysql-data 디렉토리를 만들어 사용.
- WSL 내에서 관리되므로 WSL과의 I/O 속도 문제 없음.
디렉토리 생성 방법
mkdir -p ~/mysql-data
chmod 777 ~/mysql-data # 권한 설정 (WSL 내에서만 사용하면 필요 없음)
📌 장점
- Windows와 독립적이므로 WSL에서 속도 저하 없음.
- WSL을 활용한 개발 환경과 일관성 유지.
📌 단점
- Windows에서 직접 접근하기 어려움 (\\wsl$\Ubuntu-22.04\home\사용자\mysql-data 경로 사용해야 함).
2️⃣ Windows 디렉토리 사용
Windows의 특정 폴더를 마운트하려면 WSL과 Windows 경로를 맞춰야 함.
-v /mnt/c/Users/사용자/mysql-data:/var/lib/mysql
또는
-v C:\Users\사용자\mysql-data:/var/lib/mysql
📌 장점
- Windows 파일 탐색기로 데이터 확인 가능.
- 백업 및 공유가 용이함.
📌 단점
- WSL → Windows 파일 시스템 접근 속도가 느림 (I/O 성능 저하 가능).
- Windows 경로에서 파일 시스템 차이로 인해 일부 퍼미션 문제 발생 가능.
🔹 결론 → WSL에서 개발한다면 ~/mysql-data 사용 권장!
✅ 운영 환경 (Rock-5C, Linux)
Rock-5C는 Linux 기반이므로, MySQL 데이터를 마운트할 경로를 신중하게 선택해야 합니다.
1️⃣ 표준 Linux 데이터 경로 사용 (운영 환경 추천)
-v /var/lib/mysql:/var/lib/mysql
🔹 이유:
- MySQL은 기본적으로 /var/lib/mysql을 데이터 디렉토리로 사용.
- 운영 환경에서 일반적으로 사용하는 표준 경로.
- MySQL이 내부적으로 사용하는 설정과 충돌 없이 동작.
📌 장점
- MySQL 기본 경로이므로 설정 수정 없이 사용 가능.
- 운영 환경에서 유지보수하기 용이.
📌 단점
- /var/lib/mysql이 OS와 같은 디스크를 사용하므로, 필요에 따라 다른 디스크로 옮겨야 할 수도 있음.
2️⃣ 별도 데이터 디렉토리 설정 (운영 환경에서 데이터 보호)
만약 운영 환경에서 MySQL 데이터를 별도의 디스크나 파티션에 저장하고 싶다면:
-v /mnt/data/mysql:/var/lib/mysql
또는
-v /opt/mysql-data:/var/lib/mysql
📌 장점
- /mnt/data 같은 디렉토리를 사용하면 별도의 스토리지 디스크를 마운트하여 데이터 보호 가능.
- 운영 중 MySQL 데이터 백업 및 관리가 편리.
📌 단점
- 기본 설정을 변경해야 하므로, my.cnf에서 datadir=/mnt/data/mysql 설정 필요.
🔹 결론 → 운영 환경에서는 /var/lib/mysql 기본값을 사용하거나, 필요하면 /mnt/data/mysql 같은 별도 디렉토리를 활용!
🔹 최종 정리
환경 추천 마운트 경로 이유
Windows (WSL) | -v ~/mysql-data:/var/lib/mysql | WSL 내에서 성능 최적화 |
Windows (직접 접근 필요) | -v /mnt/c/Users/사용자/mysql-data:/var/lib/mysql | Windows 탐색기로 직접 접근 가능 |
Rock-5C (운영 환경) | -v /var/lib/mysql:/var/lib/mysql | 표준 MySQL 경로, 유지보수 용이 |
Rock-5C (별도 스토리지 사용) | -v /mnt/data/mysql:/var/lib/mysql | 별도 디스크 활용 가능 |
🔹 추가 팁
- 디렉토리 생성 및 권한 설정
Rock-5C에서 MySQL 실행 전에 디렉토리를 미리 만들어 주는 것이 좋습니다. - sudo mkdir -p /var/lib/mysql sudo chown -R 999:999 /var/lib/mysql # MySQL 컨테이너 UID 확인 필요
- 컨테이너가 잘못된 권한으로 실행될 경우 해결 방법
- --user $(id -u):$(id -g)를 추가하여 호스트와 동일한 권한으로 실행.
- docker run -d \ --name mysql-container \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_DATABASE=mydb \ -e MYSQL_USER=myuser \ -e MYSQL_PASSWORD=mypassword \ -p 3306:3306 \ -v /var/lib/mysql:/var/lib/mysql \ --user $(id -u):$(id -g) \ mysql:latest
🔹 결론
- Windows(WSL)에서는 ~/mysql-data를 추천 (WSL 파일 접근 성능 최적화).
- 운영 환경(Rock-5C)에서는 /var/lib/mysql 기본값 유지 (운영 표준 경로).
- 데이터를 외부 저장소에 따로 두고 싶다면 /mnt/data/mysql을 활용.
이제 WSL에서 개발하고, Rock-5C에 이관할 때 마운트 경로만 맞춰주면 문제없이 운영 가능할 거예요. 🚀
728x90
반응형