새소식

MySQL & Maria

[ MySQL ] MySQL 데이터 디렉토리 변경

  • -
반응형

MySQL를 운영하다 보면 DIsk 교체나 특정이유로 인해 데이터 디렉터리 경로를 변경하는 경우가 있습니다. 

오늘은 데이터 디렉토리를 변경하는 방법에 대해 포스팅해 보겠습니다~

 

■ 현재 Datadir 확인

1. MYSQL 들어가서 확인
mysql> select @@datadir;
+-------------+
| @@datadir   |
+-------------+
| /data/data/ |
+-------------+
1 row in set (0.00 sec)

2.ps로 확인
[root@maria ~]# ps -ef | grep mysql
root      6412     1  0 Feb20 ?        00:00:00 /bin/sh /mysql/bin/mysqld_safe --user=mysql
mysql     6959  6412  0 Feb20 ?        00:01:32 /mysql/bin/mysqld --basedir=/mysql --datadir=/data/data --plugin-dir=/mysql/lib/plugin --user=mysql --log-error=/data/log/mariadb.log --open-files-limit=8192 --pid-file=/data/log/mariadb.pid --socket=/tmp/mysql.sock
root     27554 27473  0 08:11 pts/1    00:00:00 grep --color=auto mysql


3.my.cnf 확인
[root@maria ~]# cat /etc/my.cnf | grep datadir
datadir=/data/data

 

■ DB Shutdown

Datadir을 변경하기 이전에 MySQL Database를 종료해야 된다.

1.mysqladmin 명령어 사용
[root@maria ~]# mysqladmin -uroot -proot shutdown
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

2.Service 등록되어있는 경우
[root@maria ~]# systemctl stop mysql.service

 

■ To-Be 경로 생성 및 CP

- 새로운 경로 생성과 이전 경로의 데이터를 CP 나 MV 명령어를 이용하여 이동시켜 준다.

- CP시 -pr 옵션을 사용하여 권한과 디렉터리까지 모두 복사한다.

1. Directory 생성
[root@maria ~]# mkdir -p /data/lee
[root@maria ~]# chown -R mysql.mysql /data/lee

2. CP
[root@maria ~]# cp -pr /data/data/* /data/lee/
[root@maria ~]# ls -l /data/lee
total 1115340
-rw-r----- 1 mysql mysql        56 Feb 20 16:22 auto.cnf
-rw------- 1 mysql mysql      1676 Feb 20 16:22 ca-key.pem
-rw-r--r-- 1 mysql mysql      1112 Feb 20 16:22 ca.pem
-rw-r--r-- 1 mysql mysql      1112 Feb 20 16:22 client-cert.pem
-rw------- 1 mysql mysql      1676 Feb 20 16:22 client-key.pem
-rw-r----- 1 mysql mysql    589824 Feb 20 19:53 #ib_16384_0.dblwr
-rw-r----- 1 mysql mysql   8978432 Feb 20 16:22 #ib_16384_1.dblwr
-rw-r----- 1 mysql mysql      4465 Feb 21 08:13 ib_buffer_pool
-rw-r----- 1 mysql mysql  12582912 Feb 21 08:13 ibdata1
-rw-r----- 1 mysql mysql 536870912 Feb 20 19:53 ib_logfile0
-rw-r----- 1 mysql mysql 536870912 Feb 20 16:22 ib_logfile1
drwxr-x--- 2 mysql mysql         6 Feb 21 08:13 #innodb_temp
drwxr-x--- 2 mysql mysql       143 Feb 20 16:22 mysql
-rw-r----- 1 mysql mysql       179 Feb 20 16:22 mysql-bin.000001
-rw-r----- 1 mysql mysql       996 Feb 20 16:26 mysql-bin.000002
-rw-r----- 1 mysql mysql       203 Feb 20 19:53 mysql-bin.000003
-rw-r----- 1 mysql mysql       179 Feb 21 08:13 mysql-bin.000004
-rw-r----- 1 mysql mysql        76 Feb 20 19:53 mysql-bin.index
-rw-r----- 1 mysql mysql  25165824 Feb 20 16:26 mysql.ibd
drwxr-x--- 2 mysql mysql      8192 Feb 20 16:22 performance_schema
-rw------- 1 mysql mysql      1680 Feb 20 16:22 private_key.pem
-rw-r--r-- 1 mysql mysql       452 Feb 20 16:22 public_key.pem
-rw-r--r-- 1 mysql mysql      1112 Feb 20 16:22 server-cert.pem
-rw------- 1 mysql mysql      1676 Feb 20 16:22 server-key.pem
drwxr-x--- 2 mysql mysql        28 Feb 20 16:22 sys
-rw-r----- 1 mysql mysql  10485760 Feb 20 16:28 undo_001
-rw-r----- 1 mysql mysql  10485760 Feb 20 16:28 undo_002

 

■ MySQL 환경 설정 파일 my.cnf 변경

- /etc/my.cnf 에서 datadir값을 To-Be 디렉터리로 변경

[root@maria ~]# vim /etc/my.cnf
[mysqld]
default_time_zone = '+09:00'
basedir=/mysql
datadir=/data/lee
(생략)

 

■ DB 재기동

[root@maria lee]# mysqld_safe --user=mysql &
[1] 30796
[root@maria lee]# 2023-02-20T23:26:50.994129Z mysqld_safe Logging to '/data/log/mariadb.log'.
2023-02-20T23:26:51.029978Z mysqld_safe Starting mysqld daemon with databases from /data/lee

 

■ Datadir 확인

mysql> select @@datadir;
+------------+
| @@datadir  |
+------------+
| /data/lee/ |
+------------+
1 row in set (0.00 sec)

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.