728x90
저장공간을 따로 마운트해놨는데 DB 데이터가 "/"에 많이 쌓여 용량이 부족해질 수 있어 데이터 저장위치를 변경한다.
[Ubuntu 20.04]
- 데이터 저장 경로 확인
먼저 mysql에 접속하여 데이터 저장 경로를 확인해야한다.
mysql -u root -p # 로그인
그러면 다음과 같은 경로가 나올 것이다.select @@datadir;
데이터 저장 경로 - MariaDB 서비스 종료
# db를 사용하는 프로그램있으면 프로그램부터 종료 sudo systemctl stop mariadb
- 데이터 복사
sudo rsync -av /var/lib/mysql /home/data/mysql
- 디렉토리 권한 변경
sudo chown -R mysql:mysql /home/data/mysql
- 설정 파일 변경
datadir 부분 변경sudo vim /etc/mysql/mariab.conf/50-server.cnf
주석을 읽어보니 mariadb.cnf가 global defaults 라길래 mariadb.cnf도 추가해주었다./etc/mysql/mariadb.conf/50-server.cnf /etc/mysql/mariadb.cnf - 서비스파일 변경
Maria DB 서비스 내에 정의되어있는 ProtectHome 옵션을 비활성화 해줘야 한다. 홈 경로를 사용하므로 서비스 파일을 열어 옵션을 수정해준다.
sudo vim /lib/systemd/system/mariadb.service
/lib/systemd/system/mariadb.service - 서비스 재시작
서비스를 재시작하여 MariaDB를 다시 작동시킨다.
sudo systemctl daemon-reload sudo systemctl start mariadb
- 확인
임시로 데이터베이스를 만들어 수정한 데이터 디렉토리 위치에 데이터베이스 폴더가 생기는지 확인한다.
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 |