현재 사용 중인 데이터베이스를 다른 경로로 옮겨서 사용하려면 원본 db 이동과 함께 mysql 데이터경로 변경이 필요하다.
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 폴더가 아니라 그 하위의 데이터를 곧장 복사한다.
완료 됐으면 데이터가 잘 복사 됐는지 확인한다.
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
소켓 경로는 [mysqld]와 [client] 모두 바꿔줘야 한다.
5. mariadb 서비스 시작
준비가 완료됐으면 mariadb 서비스를 시작한다.
[root@localhost /]# systemctl start mariadb
6. 변경된 경로 확인
mysql 콘솔에 들어가서 데이터 경로가 잘 바뀌었는지 확인한다.
잘 바뀌었다. 이제 변경된 경로에 데이터를 저장한다.