본문 바로가기
Linux

MariaDB/MySQL - Database 파일 위치 변경하기

by 올엠 2022. 12. 14.
반응형

MariaDB/MySQL를 관리할 때 가장 기본적인 부분이 바로 Database는 사이즈이다.

Database는 말 그대로 데이터를 저장하는 저장소이기 때문에 많은 양의 데이터를 저장하다 보면 디스크공간이 가득차게된다.

따라서 별도의 넉넉한 저장 공간을 만들어 데이터베이스를 위치하는게 좋은데, 기본적으로 데이터베이스 경로는 아래에 위치해 있다.

/var/lib/mysql/

여기에서는 데이터베이스 경로를 변경하는 방법에 대해서 알아보고자 한다.

 

1. 현재 데이터베이스 위치 확인하기 

데이터베이스 위치를 확인하기 위해서는 먼저 mysql을 이용해서 로그인을 해야한다.

$ sudo mysql -u root -p

이후 환경 변수인 @@datadir 를 이용하면 현재 위치 정보를 확인할 수 있다.

MariaDB [(none)]> select @@datadir;

 

이제 exit 명령으로 mysql 콘솔을 빠져나오도록 하자.

MariaDB [(none)]> exit;

2. 데이터베이스 이동하기

이제 신규 경로로 변경하는 작업을 진행하도록 하자.

필자는 외장 디스크로 연결한 경로가 /data 이다 하여 /data 하위에 mysql이라는 디렉토리를 생성하여 rsync를 이용해 복사를 진행할 예정이다.

$ sudo mkdir /data/mysql
$ sudo rsync -av /var/lib/mysql /data/mysql

성공적으로 파일이 복사되는지 아래와 같이 파일 내용를 통해 확인이 가능하다.

만약 성공적으로 성공하였다면,  신규 경로에 mysql 권한을 넣어준 후, 기존 경로를 추후 문제가 없도록 제거 혹은 백업 명으로 변경하는것이 좋다.

$ sudo chown -R mysql:mysql /data/mysql/mysql
$ sudo mv /var/lib/mysql /var/lib/mysql.bak

2. MariaDB 환경 구성 변경

MariaDB의 datadir 환경 정보는 아래에 위치하고 있다.

/etc/mysql/mariadb.conf.d/50-server.cnf

MySQL은 다음 경로에 위치한다.

/etc/mysql/mysql.conf.d/mysqld.cnf

해당 파일을 열면 아래에 datadir 정보를 확인할 수 있으며, 신규 경로로 변경하도록 하자.

설정을 마무리하였다면, 서비스를 실행하여 정상적으로 시작이 되는지 확인하도록 하자.

# MariaDB
$ sudo systemctl start mariadb
# MySQL
$ sudo systemctl start mysql

3. (선택) AppArmor를 이용한 이동 경로 보호

이부분은 필수는 아니지만, AppArmor는 표준 리눅스 사용자와 그룹 기반의 권한을 보완하여, 한정된 리소스 집합으로 프로그램을 제한하는 리눅스 커널 보안 모듈로써,  AppArmor는 임의의 애플리케이션에 대해서 잠재적인 공격 범위를 줄이고 더욱 심층적인 방어를 제공하도록 구성할 수 있다. 우리가 변경한 데이터베이스 경로를 보호하고자 한다면, 

$ sudo nano /etc/apparmor.d/tunables/alias

 

아래와 같이 alias를 걸어서 보호가 가능하다. 예제에서도 mysql 데이터베이스를 보호할 수 있는 설정 방법이 나오므로 설정하기를 추천한다.

alias /var/lib/mysql -> /data/mysql,

반응형