해당 포스팅은 작성자가 공부 목적으로 작성한 글로써 작동하지 않거나 일부 틀린 부분이 존재할 수 있습니다.

개요

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

댓글남기기