DBA

개인 학습, 작업 기록용입니다. 올바르지 않은 정보가 있다면 댓글주시면 감사하겠습니다!

DATABASE/Mysql MariaDB

[MariaDB] 기본 디렉토리 datadir 변경하기 (CentOS7)

DBnA 2024. 1. 24. 15:44

환경 : CentOS7 /  10.11.6-MariaDB 

 

MariaDB 설치하면 기본 데이터 디렉토리는 /var/lib/mysql 로 설정됩니다.

 

1. 기본 데이터 디렉토리 위치 확인

 

mariaDB 접속하여

select @@datadir;

조회하면 현재 기본 데이터 디렉토리를 확인 할 수 있습니다.

[root@dbteam01 /]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.11.6-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.000 sec)

 

 

 

2. mariaDB 중지

 

mariaDB 중지 및 inactive 상태 확인

[root@dbteam01 /]# systemctl stop mariadb
[root@dbteam01 /]# systemctl status mariadb
● mariadb.service - MariaDB 10.11.6 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: inactive (dead) since Wed 2024-01-24 15:04:23 KST; 6s ago
     .
     .
     .
     (생략)

 

 

 

3. 새로운 디렉토리로 기존 데이터 복사

 

sudo rsync -av /var/lib/mysql [이동할 디렉토리]

 

제 경우에는 /data/mariadb 디렉토리 지정하였습니다.

#데이터 복사
[root@dbteam01 /]# sudo rsync -av /var/lib/mysql /data/mariadb/

sending incremental file list
created directory /data/mariadb
mysql/
.
.
.
(생략)
sent 118,190,507 bytes  received 4,082 bytes  236,389,178.00 bytes/sec
total size is 118,146,434  speedup is 1.00


#데이터 복사 확인
[root@dbteam01 mysql]# cd /data/mariadb/mysql
[root@dbteam01 mysql]# ll
total 111036
-rw-rw----. 1 mysql mysql    417792 Jan 24 15:04 aria_log.00000001
-rw-rw----. 1 mysql mysql        52 Jan 24 15:04 aria_log_control
-rw-rw----. 1 mysql mysql       974 Jan 24 15:04 ib_buffer_pool
-rw-rw----. 1 mysql mysql  12582912 Jan 24 15:04 ibdata1
-rw-rw----. 1 mysql mysql 100663296 Jan 24 15:04 ib_logfile0
-rw-rw----. 1 mysql mysql         0 Jan 19 21:39 multi-master.info
drwx------. 2 mysql mysql      8192 Jan 19 20:01 mysql
-rw-r--r--. 1 mysql mysql        15 Jan 19 20:01 mysql_upgrade_info
drwx------. 2 mysql mysql        20 Jan 19 20:01 performance_schema
drwx------. 2 mysql mysql       182 Jan 24 14:44 sbn_test
drwx------. 2 mysql mysql      8192 Jan 19 20:01 sys
drwx------. 2 mysql mysql        20 Jan 19 20:01 test

 

 

해당 명령어로 데이터 복사시 이동할 디렉토리가 없으면 생성 후 데이터 복사가 진행됩니다.

( 변경할 디렉토리 먼저 생성해줘도 무방합니다. )

 

 

 

4. 소유자 변경
[root@dbteam01 ~]# sudo chown -R mysql:mysql /data/mariadb/mysql

 

 

 

5. MariaDB 디렉토리 경로 변경 : my.cnf  / server.cnf 파일 수정

 

/etc/my.cnf 에 파일을 수정하거나

/etc/my.cnf.d/server.cnf 파일에 include 된 경우 해당 파일을 수정해줍니다.

 

### 1. my.cnf include 확인 -> my.cnf.d에 include됨 

[root@dbteam01 ~]# cat /etc/my.cnf
# This group is read both by the client and the server
# use it for options that affect everything

[client-server]

# include *.cnf from the config directory
!includedir /etc/my.cnf.d

[client]

default-character-set = utf8


### 2. /etc/my.cnf.d/server.cnf 파일내 기본디렉토리 추가

[root@dbteam01 ~]# vi /etc/my.cnf.d/server.cnf
.
.
[mariadb]
#변경할 기본 디렉토리 경로 추가
datadir=/data/mariadb/mysql
.
.

 

 

 

6. 시스템 재기동 및 경로 변경 확인
#시스템 재기동
[root@dbteam01 ~]# systemctl start mysql

#mariadb 접속 및 디렉도리 조회

[root@dbteam01 ~]# mysql -u root -p

Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.11.6-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select @@datadir;
+----------------------+
| @@datadir            |
+----------------------+
| /data/mariadb/mysql/ |
+----------------------+
1 row in set (0.000 sec)

 

 

 

7. 파일 생성 확인

 

새로운 데이터베이스 하나 생성하고, 변경된 디렉토리에 잘 생성됐는지 확인해보겠습니다.

 

# 1. MariaDB 접속하여 test_db 데이터베이스 생성

MariaDB [(none)]> create database test_db;
Query OK, 1 row affected (0.001 sec)

# 2. 변경한 데이터 디렉토리에 폴더 생성 확인

[root@dbteam01 ~]# cd /data/mariadb/mysql/
[root@dbteam01 mysql]# ls -al | grep test_db
drwx------. 2 mysql mysql        20 Jan 24 15:38 test_db

 

확인 완료