MySQL 데이터 저장 경로 변경 방법

현재 사용 중인 데이터베이스를 다른 경로로 옮겨서 사용하려면 원본 db 이동과 함께 mysql 데이터경로 변경이 필요하다.

1. 현재 데이터 경로 확인

현재 데이터 경로를 확인한다.

mysql datadir chage (1)

이 데이터 경로를 /datadir_new/mysql/ 로 옮길 것이다.

2. mysql / mariadb 종료

마리아db를 종료한다. 데이터를 옮겨야되기 때문에 반드시 종료하고 진행한다.

[root@localhost mysql]# systemctl stop mariadb

3. 데이터 옮기기

데이터는 반드시 복사해서 옮긴다. 작업이 어떻게 될지 모르기 때문에 안정화 전까지 원래 경로에 원본을 남겨두는 게 좋다.

[root@localhost datadir_new]# rsync -av /var/lib/mysql /datadir_new/

cp 보다는 rsync를 쓰면 원본의 소유 권한까지 모두 똑같이 옮겨주기 때문에 rsync를 사용한다.

이때 신규 경로를 /datadir_new/ 로 할지 /datadir_new/mysql 로 할지 고민할 수 있는데 폴더부터 mysql 데이터라는 게 드러나도록 /datadir_new/mysql 형태로 가는 게 더 낫다고 본다.

mysql 폴더 자체를 복사하려면 rsync -av /var/lib/mysql 처럼 써야된다. 끝에 /를 붙여서 /var/lib/mysql/ 로 지정하면 mysql 폴더가 아니라 그 하위의 데이터를 곧장 복사한다.

완료 됐으면 데이터가 잘 복사 됐는지 확인한다.

mysql datadir chage (2)

4. my.cnf 수정

my.cnf 를 수정하기 전에 백업을 해둔다.

[root@localhost mysql]# cp /etc/my.cnf /etc/my.cnf_20240426

my.cnf에서 datadir과 socket 경로를 바꿀 것이다.

[root@localhost mysql]# vim /etc/my.cnf

내용을 추가해준다.

[mysqld]
datadir=/datadir_new/mysql/
socket=/datadir_new/mysql/mysql.sock
[client]
socket=/datadir_new/mysql/mysql.sock
mysql datadir chage (3)

소켓 경로는 [mysqld]와 [client] 모두 바꿔줘야 한다.

5. mariadb 서비스 시작

준비가 완료됐으면 mariadb 서비스를 시작한다.

[root@localhost /]# systemctl start mariadb

6. 변경된 경로 확인

mysql 콘솔에 들어가서 데이터 경로가 잘 바뀌었는지 확인한다.

mysql datadir chage (4)

잘 바뀌었다. 이제 변경된 경로에 데이터를 저장한다.

리눅스 PostgreSQL 데이터 경로 변경 방법

댓글 남기기