🚨 MySQL 용량이 터질 것 같다구요? 데이터 폴더 이전으로 해결하세요!

,

우분투 서버에서 MySQL 데이터 폴더를 별도의 파티션으로 옮기는 방법입니다.

왜 데이터 폴더를 옮겨야 할까? 🤔

MySQL 데이터 폴더를 별도 파티션으로 옮겨야 하는 대표적인 경우들이 있습니다:

  1. 디스크 공간 부족: 시스템 파티션(/)의 용량이 부족해질 때
  2. 성능 최적화: SSD와 같은 더 빠른 저장장치로 이전하고 싶을 때
  3. 백업 관리: 데이터만 따로 백업하기 쉽도록 구성하고 싶을 때

작업 전 꼭 확인하세요! ⚠️

  1. 반드시 데이터베이스 백업을 먼저 진행해야 합니다
  2. 충분한 디스크 공간이 있는지 확인해야 합니다
  3. 서비스 중단 시간을 고려해 적절한 시점을 선택해야 합니다

단계별 이전 방법 📝

1. MySQL 서비스 중지

sudo systemctl stop mysql

2. 데이터 복사

sudo rsync -av /var/lib/mysql/ /new-partition/new-data-directory

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

각 디렉토리는 최소한 다음 권한이 필요합니다:

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이 시작되지 않는다면:

  1. 시스템 로그 확인: journalctl -xe
  2. MySQL 에러 로그 확인: tail -f /var/log/mysql/error.log
  3. 권한 문제인 경우가 많으니 소유자와 권한을 다시 한 번 확인하세요:
   chown -R mysql:mysql /new-partition/new-data-directory
   chmod -R 750 /new-partition/new-data-directory

작업 완료 후 확인사항 ✅

  1. MySQL 서비스가 정상적으로 실행되는지 확인
  2. 데이터베이스 접속 테스트
  3. 주요 테이블들이 정상적으로 조회되는지 확인
  4. 백업해둔 이전 데이터 폴더는 문제없음이 확인된 후 삭제

마치며

이렇게 MySQL 데이터 폴더 이전 작업을 완료했습니다! 좀 복잡해 보일 수 있지만, 단계별로 차근차근 진행하면 어렵지 않습니다.

특히 AppArmor 설정을 잊지 말고 꼭 해주세요. 이 부분을 놓치면 서비스가 시작되지 않아 당황할 수 있습니다.

질문이나 궁금한 점이 있으시다면 댓글로 남겨주세요. 함께 해결해보도록 하겠습니다!

👇 카테고리 글 목록

,

대표글

댓글 남기기