ubuntu 16.04 Mysql 데이터 디렉토리 변경 방법 에 대해서 알아보겠습니다. 참고로 mysql과 mariadb 두 개 모두 유사하게 설정이 가능하기 때문에 이를 mysql이다라고 생각하시면서 보면 되겠습니다.
ubuntu 16.04 Mysql 데이터 디렉토리 변경 방법
3가지 사항을 고려하면 ubuntu 16.04 Mysql(mariadb) 데이터 디렉토리 변경이 가능합니다. 첫 번째는 데이터 디렉토리를 찾아서 rsync 명령을 이용하여 권한을 그대로 유지하면서 이전하고자 하는 폴더로 복사하는 것입니다. 그리고 이전한 폴더에 대하여 설정을 변경합니다. 마지막으로 이전하고자 하는 폴더에 대하여 리눅스 커널 보안 모듈에 등록하는 겁니다.
데이터 디렉토리 이전
데이터 디렉토리를 이전하는 것은 다음과 같은 명령을 수행하면 됩니다. 여기서는 /home/db/mysql/data 폴더에 데이터를 이전하는 방법을 다룹니다. 일단 작업 전에 mysql 데몬을 중지시켜야 합니다. 그리고 이전하고자 하는 디렉토리를 생성합니다. 그리고 rsync를 이용하여 권한을 유지한채 폴더를 복사합니다.
systemctl stop mysql mkdir /home/db mkdir /home/db/mysql mkdir /home/db/mysql/data rsync -av /var/lib/mysql/ /home/db/mysql/data
Mysql 데이터 디렉토리 설정 변경
기본으로 설정되어 있는 /var/lib/mysql/ 폴더가 변경되었으니 그 설정을 변경해 주어야 합니다. vi나 nano 에디터를 이용해서 해당 서버 정보를 수정합니다.
vi /etc/mysql/mariadb.conf.d/50-server.cnf datadir = /home/db/mysql/data
AppArmor 커널 보안 모듈에 해당 디렉토리 등록
리눅스 버전 2.6.36부터 포함된 기능으로 Application Armor의 약자입니다. ubuntu에는 7.10부터 패키지가 포함되고 Mysql 설정 프로필에 대해서는 ubuntu 9.04부터 가지게 되었습니다. 중요한건 Mysql 이전한 폴더에 대한 프로필을 등록하고 해당 데몬을 재시작해 주면 됩니다. 마지막으로 Mysql 데몬을 다시 기동시켜 주면 됩니다.
vi /etc/apparmor.d/tunables/alias alias /var/lib/mysql/ -> /home/db/mysql/data/, systemctl restart apparmor systemctl start mysql
ubuntu 16.04 Mysql 데이터 디렉토리 변경 방법 요약
- Mysql 데몬을 정지한다.
- 이전할 디렉토리를 생성한다.
- 디렉토리를 rsync를 이용하여 권한을 유지하며서 복사한다.
- Mysql의 디렉토리 설정을 변경한다.
- AppArmor의 Mysql에 대한 새로운 디렉토리 정보를 프로필 설정으로 추가한다.
- AppArmor를 재가동한다.
- Mysql 데몬을 시작한다.
여기까지 잘 되었다면 Mysql 데이터 디렉토리가 잘 옮겨졌을 겁니다.
최초에 파티셔닝 작업을 할 때에, 용도별로 잘 구분하였다면, 그리고 apt-get이나 yum을 이용해서 default 디렉토리로 설치되었을 경우, 어렵지 않게 옮길수 있습니다. 예를 들어서 SSD와 HDD가 동시에 있을 경우, MySQL의 데이터는 SSD 디렉토리로 옮겨주는 것이 더 좋은 방법이 될 수 있겠습니다.