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,
'Linux' 카테고리의 다른 글
Nginx - Reverse Proxy로 활용하기 (0) | 2022.12.25 |
---|---|
Mac - Zip with password, 암호로 압축하기 (0) | 2022.12.16 |
certbot - LetsEncrypt으로 Nginx에 무료 SSL 적용 (0) | 2022.12.13 |
Azure - Linux Disk Add in VM (0) | 2022.12.13 |
VScode - (Azure, AWS) Ubuntu SSH 연결하기 with pem (0) | 2022.12.13 |