[MySQL] Linux MariaDB 데이터저장 위치 변경

728x90

저장공간을 따로 마운트해놨는데 DB 데이터가 "/"에 많이 쌓여 용량이 부족해질 수 있어 데이터 저장위치를 변경한다.

[Ubuntu 20.04]

  1. 데이터 저장 경로 확인
    먼저 mysql에 접속하여 데이터 저장 경로를 확인해야한다.
    mysql -u root -p
    # 로그인​
    select @@datadir;​
    그러면 다음과 같은 경로가 나올 것이다.
    데이터 저장 경로
  2. MariaDB 서비스 종료
    # db를 사용하는 프로그램있으면 프로그램부터 종료
    sudo systemctl stop mariadb​​
  3. 데이터 복사
    sudo rsync -av /var/lib/mysql /home/data/mysql​
  4. 디렉토리 권한 변경
    sudo chown -R mysql:mysql /home/data/mysql​
  5. 설정 파일 변경
    sudo vim /etc/mysql/mariab.conf/50-server.cnf​
    datadir 부분 변경
    /etc/mysql/mariadb.conf/50-server.cnf
    주석을 읽어보니 mariadb.cnf가 global defaults 라길래 mariadb.cnf도 추가해주었다.
    /etc/mysql/mariadb.cnf
  6. 서비스파일 변경
    Maria DB 서비스 내에 정의되어있는 ProtectHome 옵션을 비활성화 해줘야 한다. 홈 경로를 사용하므로 서비스 파일을 열어 옵션을 수정해준다.
    sudo vim /lib/systemd/system/mariadb.service​
    /lib/systemd/system/mariadb.service
  7. 서비스 재시작
    서비스를 재시작하여 MariaDB를 다시 작동시킨다.
    sudo systemctl daemon-reload
    sudo systemctl start mariadb​
  8. 확인
    임시로 데이터베이스를 만들어 수정한 데이터 디렉토리 위치에 데이터베이스 폴더가 생기는지 확인한다.
    mysql -u root -p
    # 로그인​​
    select @@datadir;
    #바꾼위치로 되어있는지 확인
    create database wook;
    exit();​

    #수정한 위치로 이동
    cd /home/data/mysql
    
    ls
    
    # wook이라는 폴더가 있으면 정상적으로 데이터 디렉토리가 수정된거임​

[ CentOS ]

1 ~ 4 번까지는 동일

5. 설정파일 변경
CentOS의 mariadb는 .sock 파일이 /var/lib/mysql 폴더안에 같이 존재하여 설정파일에서 socket까지 변경해줘야한다. (Ubuntu는 socket이 /var/run/에 있기때문에 신경안써도됨)

vim /etc/my.cnf.d/server.cnf
# [mysqld] 밑에 추가 없으면 적어줄 것
 
# 바꾸는 경로입력
datadir=/home/data/mysql

# 바꾸는 경로/mysql.sock
socket=/home/data/mysql/mysql.sock
vim /etc/my.cnf.d/client.cnf
# [client] 밑에 추가 없으면 적어줄 것
# 바꾸는 경로/mysql.sock
socket=/home/mariadb/mysql/mysql.sock

 

 

6. 서비스 파일 변경
내가 변경한 CentOS의 mariadb 버전은 5.5.60버전이라 ProtectHome이 없었다
혹시나 있으면 변경해주면 될듯하다. 아니면 구글검색을 추천..

7 ~ 8 번 동일

'개발 지식 > MySQL' 카테고리의 다른 글

[MySQL] 테이블 파티셔닝  (0) 2024.01.06
[MySQL] MariaDB TimeZone 변경  (1) 2024.01.06