본문 바로가기
Work/DataBase

[MySQL] Windows 설치된 MySQL 8 드라이브 변경(C에서 D로 변경) , 재시작 Error해결

MySQL을 C에 설치했다가, 용량이 부족하거나,

tmp가 꽉차서 동작을 멈추거나,

서비스가 중지되는 경우가 발생할때,  다른 드라이버로 데이터를 옮기고 사용해야한다.

 

MySQL은 Oracle같이 두개의 드라이브를 저장공간으로 사용하지 않는다. 

 

옮기기는 간단하다.

1. MySQL 이전에 있던 데이터를 옮겨주고,

2. 시스템변수중 Datadir의 경로만 바꿔주면 끝이다,

 

 

 

 

1. 데이터 옮기기

 

C드라이브에 설치했다면, 데이터폴더는 

C:\ProgramData\MySQL\MySQL Server 8.0\Data 에 있다.

원하는 드라이브에 경로를 만들어 Data 폴더를 옮겨주기만, 하면된다.

D:\ProgramData\MySQL\MySQL Server 8.0\Data

필자는 위와같이 경로를 만들어 옮겨주었다.

 

# 옮겨지고나서 사용후에 C데이터를 지우기를 권장한다.

 

 

여기서 중요!

데이터를 옮길떄, 폴더에 대한 권한도 함꼐 옮겨져야한다.

특히 NETWORK SERVICE 에 대한 사용자권한이 있는지 Check하자

없어서 재기동에 에러를 겪었다.

 

 

 

2. my.ini 수정

my.ini는 중요파일이므로, 꼭 org로 백업을 하나 해두자!

my.ini 위치 - C:\ProgramData\MySQL\MySQL Server 8.0 에  존재한다.

MySQL 서비스 기동시 my.ini 을 참조하여 시스템변수를 적용시키므로,

이 안에  datadir 값을 아래와 같이 주석처리하고 변경시켜준다.

 

 

 

 

만약 D에 옮길때, MySQL 폴더를  통채로 옮겨서

D:\ProgramData\MySQL\MySQL Server 8.0 안에있는 my.ini을 수정했다면,

레지스트리도 수정해주자.

 

 

 

윈도우+R 키로 실행창을 열고    regedit을 열어서 

아래 경로에 있는 MySQL 레지스트리에 들어간다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80

ImagePath를 변경해준다

 

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

 

빨간부분을 수정한 my.ini이 있는 경로로 넣어준다.

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="D:\ProgramData\MySQL\MySQL Server 8.0\my.ini

 

이렇게!

 

 

이제 서비스를 재시작해보자.

 

 

기동후 설정이 변경되었는지 Command에 들어가서 조회해보자!

 

> show variables like '%datadir';

 

 

 

3. 재시작 Error

만약 MySQL 서비스 재시작이 안된다면, my.ini에 대한 에러일것이다.

반드시 백업파일을 잘 가지고있어야한다.

 

필자는 영문 windows 서버에서 인코딩변경으로 인해 재시작이 안된경우도 있었고,

옮겨진 Data폴더에 동일권한이 없어서 문제가 발생하기도 하였다.

복사시 동일 권한을 가지지않는 경우가 있기때문에 반드시 Data폴더와 my.ini에 대한 권한을 확인하자!

 

간혹 대용량 Disk나 특정 Disk에 대해서 데이터 맵핑에러가 발생할수도 있다고 한다.