해당 포스팅은 작성자가 공부 목적으로 작성한 글로써 작동하지 않거나 일부 틀린 부분이 존재할 수 있습니다.
개요
PC내의 저장소 파티션 사정으로 데이터베이스의 저장 경로를 바꿔야하는 작업이 필요했고 기존 /dev/sdd1
에서 /dev/sdd2
내의 경로로 바꾸는 방식으로 진행했다.
진행
데이터 저장 경로 확인
우선 Maria DB를 실행시켜 현재 데이터베이스가 저장되는 경로를 살펴본다. 일단 MariaDB를 터미널에서 실행한다.
$ sudo mysql
or
$ mysql -uroot -p{root 계정 비밀번호}
다음 쿼리를 입력하여 데이터 베이스 저장경로를 확인한다.
> SELECT @@datadir;
출력은 다음과 비슷할 것이다.
MariaDB [(none)]> select @@datadir;
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
기본경로와 동일하게 /var/lib/mysql
에 데이터베이스가 저장되어 있음을 알 수 있다. 모든 이용자가 해당 경로가 아닐 수도 있으니 꼭 확인하자.
데이터베이스 서비스 종료
현재 돌아가고 있는 Maria DB 서비스를 종료해준다.
$ sudo systemctl stop mariadb.service
저장소 위치 변경
다음 명령어를 통해 기존 저장되어있는 데이터를 원하는 경로로 옮긴다. 본인은 /home/data/mysql/
이라는 임의의 경로로 옮겼다.
# sudo rsync -av {기존 저장 경로} {원하는 경로}
$ sudo rsync -av /var/lib/mysql /home/data/mysql/
본인의 경험 상 루트 경로로 부터 디렉토리의 depth가 3은 되어야 최종적으로 Maria DB가 다시 잘 작동하는 것 같았다. 즉, 예를 들면 /home/mysql/
은 안되고 /home/data/mysql/
은 된다는 것이다. 경험 상 그렇다는 것이고 정확한 원인은 모르지만 권한 문제로 추정된다.
설정 적용
디렉토리 권한 확인
복사해온 해당 디렉토리의 ls -l
명령어를 통해 소유 권한을 확인한다. mysql
로 되어있어야하며 안되어있다면 다음 명령어를 통해 소유권한을 바꿔준다.
$ sudo chown -R mysql.mysql /home/data/mysql
설정 파일 변경
Maria DB 서버의 설정파일을 열어 datadir
항목을 우리가 옮긴 저장소 경로로 바꿔준다.
$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
기존 경로인 /var/lib/mysql
을 주석처리하고 /home/data/mysql
로 변경한 것을 확인할 수 있다.
>>>
...
...
#
# * Basic Settings
#
user = mysql
pid-file = /run/mysqld/mysqld.pid
basedir = /usr
# datadir = /var/lib/mysql
datadir = /home/data/mysql
tmpdir = /tmp
...
...
서비스 파일 변경
Maria DB 서비스 내에 정의되어있는 ProtectHome
옵션을 비활성화 해줘야 한다. 홈 경로를 사용하므로 서비스 파일을 열어 옵션을 수정해준다. Maria DB 10.6 기준으로는 다음 경로다.
$ sudo vi /lib/systemd/system/mariadb.service
true
로 되어있는 값을 false
로 변경해주었다.
...
# Prevent accessing /home, /root and /run/user
ProtectHome=false
...
서비스 재시작
서비스를 재시작하여 Maria DB를 다시 작동 시킨다.
$ sudo systemctl daemon-reload
$ sudo systemctl start mariadb.service
댓글남기기