우분투 서버에서 MySQL 데이터 폴더를 별도의 파티션으로 옮기는 방법입니다.
왜 데이터 폴더를 옮겨야 할까? 🤔
MySQL 데이터 폴더를 별도 파티션으로 옮겨야 하는 대표적인 경우들이 있습니다:
- 디스크 공간 부족: 시스템 파티션(
/
)의 용량이 부족해질 때 - 성능 최적화: SSD와 같은 더 빠른 저장장치로 이전하고 싶을 때
- 백업 관리: 데이터만 따로 백업하기 쉽도록 구성하고 싶을 때
작업 전 꼭 확인하세요! ⚠️
- 반드시 데이터베이스 백업을 먼저 진행해야 합니다
- 충분한 디스크 공간이 있는지 확인해야 합니다
- 서비스 중단 시간을 고려해 적절한 시점을 선택해야 합니다
단계별 이전 방법 📝
1. MySQL 서비스 중지
sudo systemctl stop mysql
2. 데이터 복사
sudo rsync -av /var/lib/mysql/ /new-partition/new-data-directory
-a
: 아카이브 모드 (권한, 타임스탬프 등 보존)-v
: 진행 상황 표시
3. 기존 폴더 백업 및 심볼릭 링크 생성
sudo mv /var/lib/mysql /var/lib/mysql.bak
sudo ln -s /new-partition/new-data-directory /var/lib/mysql
4. 권한 설정 확인
새로운 경로에 대한 권한을 확인하고 필요한 경우 수정합니다:
sudo -u mysql namei /new-partition/new-data-directory
namei 명령어는 경로의 각 구성 요소별 권한을 보여줍니다.
$ sudo -u mysql namei /home/mytory/temp/new-data-directory
[16:01:55]
f: /home/mytory/temp/new-data-directory
d /
d home
d mytory
d temp 👈 여기가 문제!
new-data-directory - 허가 거부
예시 결과를 살펴보면 /home/mytory/temp/new-data-directory
까지 mysql
계정으로 접근하는 데 어디서 문제가 발생하는지 보여 주는데요. new-data-directory
를 읽는 데 허가 거부 문제가 발생한 것을 볼 수 있죠. new-data-directory
를 읽을 수 있으려면 temp
에 권한이 있어야 합니다. 그래서 temp
권한이 문제인 겁니다.
해결하려면 아래와 같이 명령을 내립니다.
sudo chmod 755 /home/mytory/temp
각 디렉토리는 최소한 다음 권한이 필요합니다:
- mysql 사용자가 읽기(r)와 실행(x) 권한을 가져야 합니다
- 상위 디렉토리들도 모두 실행(x) 권한이 있어야 합니다
5. AppArmor 설정 수정
AppArmor가 새로운 위치를 허용하도록 설정해야 합니다.
/etc/apparmor.d/tunables/alias
파일을 열고 다음 줄을 추가:
alias /var/lib/mysql/ -> /new-partition/new-data-directory/
그리고 apparmor를 재시작합니다.
sudo systemctl restart apparmor
6. MySQL 서비스 시작
systemctl start mysql
7. 작업 완료 후 정리 🧹
모든 것이 정상 작동하는지 확인:
# MySQL 서비스 상태 확인
sudo systemctl status mysql
# 데이터베이스 접속 테스트
mysql -u root -p
# 또는
sudo mysql
최소 하루 이상 정상 운영을 확인한 후, 백업해둔 이전 데이터 폴더 삭제:
# 이전 데이터 폴더 삭제
sudo rm -rf /var/lib/mysql.bak
⚠️ 삭제 전 반드시 확인하세요.
- 현재 MySQL이 정상 작동하는지 확인
- 중요 데이터베이스들이 모두 접근 가능한지 확인
- 최소 24시간 이상 문제없이 운영된 것을 확인
문제 해결 🔧
만약 MySQL이 시작되지 않는다면:
- 시스템 로그 확인:
journalctl -xe
- MySQL 에러 로그 확인:
tail -f /var/log/mysql/error.log
- 권한 문제인 경우가 많으니 소유자와 권한을 다시 한 번 확인하세요:
chown -R mysql:mysql /new-partition/new-data-directory
chmod -R 750 /new-partition/new-data-directory
작업 완료 후 확인사항 ✅
- MySQL 서비스가 정상적으로 실행되는지 확인
- 데이터베이스 접속 테스트
- 주요 테이블들이 정상적으로 조회되는지 확인
- 백업해둔 이전 데이터 폴더는 문제없음이 확인된 후 삭제
마치며
이렇게 MySQL 데이터 폴더 이전 작업을 완료했습니다! 좀 복잡해 보일 수 있지만, 단계별로 차근차근 진행하면 어렵지 않습니다.
특히 AppArmor 설정을 잊지 말고 꼭 해주세요. 이 부분을 놓치면 서비스가 시작되지 않아 당황할 수 있습니다.
질문이나 궁금한 점이 있으시다면 댓글로 남겨주세요. 함께 해결해보도록 하겠습니다!
댓글 남기기