기본 경로에 저장하던 MariaDB 데이터량이 많아지다 보니 용량이 부족해 다른 파티션의 경로로 변경할 필요가 생겼습니다. 여기서는 순서대로 경로 변경하는 방법을 알아보겠습니다.
데이터 이전
데이터를 이전하기 위해 먼저 서버를 정지시킵니다.
$ systemctl stop mariadb.service
새롭게 사용할 데이터 폴더(여기서는 /home/mysql 로 하겠습니다)를 생성하고 rsync 를 이용해 데이터를 복사합니다. (rsync 를 활용하면 파일의 권한과 소유자 정보도 동일하게 동기화해줍니다.)
$ cd /home
$ sudo rsync -avh /var/lib/mysql .
만약 mysql 이 아닌 다른 경로로 하고 싶다면 아래와 같이 권한 지정 후 rsync 하면 됩니다.
$ mkdir /home/mariadb
$ chown mysql:mysql /home/mariadb
$ cd /home/mariadb
$ rsync -avh /var/lib/mysql/ .
경로 설정 변경하기
콘솔에서 vi 를 이용해 설정 파일을 엽니다.
$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
내용 중 아래의 datadir 경로를 변경하고 저장합니다.(:wq)
# datadir = /var/lib/mysql
datadir = /home/mysql
DB 서버 서비스 시작 및 오류 해결하기
$ sudo systemctl start mariadb.service
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xeu mariadb.service" for details.
마리아 디비 서버가 시작되지 않고 오류가 발생했네요. 알려준 대로 status 출력을 해봅니다.
$ sudo systemctl status mariadb.service
× mariadb.service - MariaDB 10.6.12 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2023-03-16 13:33:13 KST; 24min ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 1702049 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 1702050 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 1702052 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR>
Process: 1702133 ExecStart=/usr/sbin/mariadbd $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
Main PID: 1702133 (code=exited, status=1/FAILURE)
Status: "MariaDB server is down"
CPU: 153ms
3월 16 13:33:13 doogle.link systemd[1]: Starting MariaDB 10.6.12 database server...
3월 16 13:33:13 doogle.link mariadbd[1702133]: 2023-03-16 13:33:13 0 [Warning] Can't create test file /home/mysql/doogle.lower-test
3월 16 13:33:13 doogle.link mariadbd[1702133]: [89B blob data]
3월 16 13:33:13 doogle.link mariadbd[1702133]: 2023-03-16 13:33:13 0 [ERROR] Aborting
3월 16 13:33:13 doogle.link systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
3월 16 13:33:13 doogle.link systemd[1]: mariadb.service: Failed with result 'exit-code'.
3월 16 13:33:13 doogle.link systemd[1]: Failed to start MariaDB 10.6.12 database server.
이렇게 오류가 발생했네요. 테스트 파일을 생성하지 못하는 것을 보니 뭔가 권한 문제가 걸린 것 같습니다. 구글에서 검색해 보니 MariaDB 서비스 설정에서 /home 경로와 같은 특정 경로 접근이 제한하는 설정이 들어있습니다. 결국 데이터 저장 경로를 다른 곳으로 바꾸던지 바꿀 수 없는 경우 제한 설정을 해제하면 됩니다.
먼저 서비스 설정 파일을 엽니다.
$ sudo vi /usr/lib/systemd/system/mariadb.service
/home 경로 차단 설정을 해제하고 저장합니다. (기존 설정을 주석 처리) (:wq)
# Prevent accessing /home, /root and /run/user
#ProtectHome=true
ProtectHome=false
이제 아래 명령어를 실행해 서비스를 시작해 주면 됩니다.
$ sudo systemctl daemon-reload
$ sudo systemctl start mariadb.service
휴 이제야 오류 없이 정상적으로 작동하네요! ^ㅇ^//
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.