웹사이트 검색

Linux에서 기본 MySQL/MariaDB 데이터 디렉터리를 변경하는 방법


CentOS/RHEL 7 서버에 LAMP 스택 구성 요소를 설치한 후 수행할 수 있는 몇 가지 작업이 있습니다.

그 중 일부는 Apache 및 MySQL/MariaDB의 보안 강화와 관련이 있는 반면, 다른 일부는 설정이나 필요에 따라 적용 가능하거나 적용되지 않을 수 있습니다.

예를 들어, 데이터베이스 서버의 예상 용도에 따라 기본 data 디렉터리(/var/lib/mysql)를 다른 위치로 변경할 수 있습니다. 높은 사용량으로 인해 이러한 디렉터리가 증가할 것으로 예상되는 경우입니다.

그렇지 않으면 /var가 저장된 파일 시스템이 한 지점에서 붕괴되어 전체 시스템에 장애가 발생할 수 있습니다. 기본 디렉터리를 변경하는 또 다른 시나리오는 실제 데이터를 저장하는 데 사용하려는 전용 네트워크 공유가 있는 경우입니다.

이러한 이유로 이 문서에서는 CentOS/RHEL 7 서버 및 Ubuntu/Debian 배포판에서 기본 MySQL/MariaDB 데이터 디렉터리를 다른 경로로 변경하는 방법을 설명합니다.

MariaDB를 사용하겠지만 이 문서에서 설명된 개념과 수행된 단계는 별도로 명시하지 않는 한 MySQLMariaDB 모두에 적용됩니다.

기본 MySQL/MariaDB 데이터 디렉터리 변경

참고: 새 데이터 디렉터리가 /mnt/mysql-data라고 가정합니다. 이 디렉토리는 mysql:mysql이 소유해야 한다는 점에 유의하는 것이 중요합니다.

mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data

귀하의 편의를 위해 프로세스를 따라하기 쉬운 5단계로 나누었습니다.

1단계: 현재 MySQL 데이터 디렉터리 식별

시작하려면 다음 명령을 사용하여 현재 데이터 디렉터리를 식별하는 것이 좋습니다. 과거에 변경되었을 수 있으므로 여전히 /var/lib/mysql이라고 가정하지 마십시오.

mysql -u root -p -e "SELECT @@datadir;"

MySQL 비밀번호를 입력하면 다음과 유사하게 출력됩니다.

2단계: MySQL 데이터 디렉터리를 새 위치에 복사

데이터 손상을 방지하려면 계속하기 전에 현재 실행 중인 서비스를 중지하세요. 이를 수행하려면 잘 알려진 systemd 명령을 사용하세요.

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

서비스가 중단된 경우 마지막 명령의 출력은 다음과 같아야 합니다.

그런 다음 원래 권한과 타임스탬프를 유지하면서 /var/lib/mysql의 내용을 /mnt/mysql-data에 재귀적으로 복사합니다.

cp -R -p /var/lib/mysql/* /mnt/mysql-data

3단계: 새 MySQL 데이터 디렉터리 구성

새 데이터 디렉터리(이 경우 /mnt/mysql-data)를 나타내도록 구성 파일(my.cnf)을 편집합니다.

vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf

[mysqld][client] 섹션을 찾아 다음과 같이 변경합니다.

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

변경 사항을 저장한 후 다음 단계를 진행하세요.

4단계: SELinux 보안 컨텍스트를 데이터 디렉터리로 설정

이 단계는 RHEL/CentOS 및 그 파생 제품에만 적용됩니다.

MariaDB를 다시 시작하기 전에 SELinux 보안 컨텍스트를 /mnt/mysql-data에 추가하세요.

semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data

다음으로 MySQL 서비스를 다시 시작합니다.

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

이제 1단계와 동일한 명령을 사용하여 새 데이터 디렉터리의 위치를 확인합니다.

mysql -u root -p -e "SELECT @@datadir;"

5단계: MySQL 데이터베이스를 생성하여 데이터 디렉터리 확인

MariaDB에 로그인하고 새 데이터베이스를 만든 다음 /mnt/mysql-data를 확인하세요.

mysql -u root -p -e "CREATE DATABASE tecmint;"

축하해요! MySQL 또는 MariaDB의 데이터 디렉터리를 성공적으로 변경했습니다.

요약

이 게시물에서는 CentOS/RHEL 7 및 Ubuntu/Debian 배포판에서 실행되는 MySQL 또는 MariaDB 서버에서 데이터 디렉터리를 변경하는 방법에 대해 설명했습니다.

이 기사에 대해 질문이나 의견이 있으신가요? 아래 양식을 사용하여 자유롭게 알려주십시오. 귀하의 의견을 항상 기쁘게 생각합니다!