MySQL 데이터베이스를 다른 드라이브로 어떻게 옮길 수 있습니까?


34

로컬 컴퓨터에서 MySQL 5.5를 사용하여 대량의 정부 데이터를 분석하고 있습니다. 기본 드라이브 (Win7 C : 드라이브)에있는 로컬 데이터베이스를 만들었습니다. 대용량 eSATA 외장 드라이브 인 E : 드라이브에 데이터를 저장하고 싶습니다.

어떤 조치를 취해야합니까?

mysql 

dB를 sql 파일로 내 보낸 다음 파일을 저장하십시오. e : 다음에 dB를 복원하려면이 파일을 가져올 수 있습니다.

@ tq-작동하지 않습니다. 그는 MySQL 서버 데이터 디렉토리를 변경하려고합니다. 그가 가져오고 가져 오면 여전히 같은 드라이브에있을 것입니다!

데이터베이스 파일을 외장 드라이브로 옮길 때주의 할 점은 컴퓨터에 꽂아 두어야합니다. 그렇지 않으면 데이터 파일을 찾을 수 없기 때문에 데이터베이스가 충돌합니다.
Stephen Senkomago Musoke

답변:


35
  1. mysql을 종료하십시오.
  2. 현재 데이터 디렉토리의 모든 파일을 새 위치로 이동하십시오 (3 단계- datadir매개 변수 의 위치를 ​​확인하십시오 ).
  3. my.ini파일을 찾으십시오 (mysql 설치 디렉토리에 있음). datadir새 위치를 가리 키도록 매개 변수 값을 변경하십시오 .
  4. mysql을 시작하십시오.

mysql을 시작할 때 오류가 발생했습니다 (권한 문제). 나는 내가 여기 에 게시 한 솔루션에 정착하여 누군가를 시간을 절약하는 데 도움이되기를 바랍니다.
snapfractalpop

1
@snapfractalpop 질문은 Windows 용입니다
adam

@adam windows는 질문 본문에 언급되어 있지만 Windows 전용 질문으로 태그되지 않았으며 제목에 언급 된 창도 아닙니다. Windows가 아닌 다른 사용자 도이 질문에 걸려 넘어 질 수 있으므로 의견에 링크를 게시했습니다.
snapfractalpop

/에 대한 디렉토리 경로에서 \를 디렉토리 구분 기호로 사용 하지 말아야 한다는 것을 알았습니다 datadir. Windows 10에서 WAMPserver를 사용하고 있습니다.
Steve

ProgramData 디렉토리가 파일 탐색기에 숨겨져있을 수 있습니다. 숨겨진 파일을 표시하도록 설정을 변경하기 전까지는 존재하지 않는다고 생각했습니다.
WestAce

6

당신이 창을 요구하고 있지만, 여기에 리눅스 / 우분투 방향을 찾고 여기서 끝나는 사람들을 위해 좋은 방향은 다음과 같습니다 :

가정 :

  • 당신은 외부 / USB / 대체 드라이브에 MySQL의 데이터가 /mountpoint/var/lib/mysql아마도 사망 컴퓨터 또는 이전 설치에서,
  • 로컬로 새로운 우분투 설치로 옮기고 싶습니다 /var/lib/mysql
  • 다음을 사용하여 MySQL을 중지하십시오
    sudo /etc/init.d/mysql stop.
  • 다음을 사용하여 현재 (깨끗한) MySQL 데이터 디렉토리를 백업하십시오
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • 그런 다음 다음을 사용하여 이전 드라이브에서 이전 데이터 디렉토리를 복사하십시오.
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    where mountpoint는 마운트 경로입니다.
  • 이제 다음을 사용하여 MySQL을 다시 시작하십시오.
    sudo /etc/init.d/mysql start

운 좋게도 MySQL은 다시 시작해야하며 기존 데이터베이스를 다시 가져와야합니다.

출처 mb_webguy@ubuntuforums.org


3
(!) 구성이 여전히 이전 위치를 가리키고 있기 때문에 작동하지 않습니다.
ADOConnection

4

해결책 1 :

  1. 우선`mysqldump를 사용하여 데이터를 백업하십시오.
  2. 공식 패키지에서 Mysql 서버를 설치하는 경우 서버의 bin 디렉토리에서 MySQLINstanceConfig.exe 프로그램을 실행하면됩니다.
  3. 데이터 가져 오기

MySQLINstanceConfig.exe

두 번째 솔루션 (권장하지 않지만 동일한 시스템에서 작동)

  1. MySQL 서버를 중지하십시오.
  2. 데이터 디렉토리에서 새 디렉토리로 데이터 복사
  3. my.cnf 파일을 엽니 다 (제 경우 "C : \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. datadir = "C : \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \"와 같은 행을 찾고 새 위치로 경로를 변경하십시오.
  5. 서버를 시작하십시오

버전 5.6부터 MySQLInstanceConfig.exe는 더 이상 배포되지 않습니다. 이 기능은 설치 프로그램으로 대체되고 있습니다. http://bugs.mysql.com/bug.php?id=66306


데이터 이동을위한 동등한 Linux 프로그램이 있습니까
Ron Piggott

두 번째 방법으로 데이터를 이동 한 후 MariaDB (버전 5.5)를 시작할 수 없었습니다. 서비스 사용자에게 새 datadir에 대한 액세스 권한을 부여한 후 서비스가 시작되고 DB에 연결하지 않아도됩니다. 그러나 테이블에 대한 액세스는 여전히 실패합니다 [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists... 권한이 올바르게 설정되도록하려면 어떻게해야합니까?
브람

2

Windows의 경우 MySQL Installer 1.4.6 (2015-04-07) 부터 데이터 위치가 my.ini파일 의 위치를 ​​지정하는 레지스트리 키에 지정 될 수 있으므로 데이터가 기본 위치가 아닌 위치에 처음 설치된 경우 my.ini파일에되지 않습니다 C:\ProgramData\MySQL\MySQL Server x.x\.

레지스트리 값의 위치는 다음과 같습니다 (최소한 MySQL 5.6 기준).

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

LocationREG_SZMySQL 응용 프로그램 파일이있는 폴더를 가리 킵니다. 기본적으로:C:\Program Files\MySQL\MySQL Server x.x\

DataLocation는 위치한 REG_SZ폴더를 가리 킵니다 my.ini. 기본적으로 :C:\Program Files\MySQL\MySQL Server x.x\

또한, my.ini: 파일 경로는이 레지스트리 키에 서비스 명령에 포함 된 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXImagePath REG_EXPAND_SZ값입니다.

이 문자열의 기본값은 다음과 같습니다. "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

결론적으로이 시나리오에서 데이터 파일을 이동하려면 @ITCuties가 게시 한 단계를 추가해야합니다.

전체 단계는 다음과 같습니다.

  1. mysql을 종료하십시오.
  2. 위의 DataLocation레지스트리 값을 찾아 현재 my.ini파일 위치 를 찾으십시오. 또한 파일을 이동하려면 경로를 my.ini업데이트 DataLocation하고 my.ini파일을이 새 경로 로 이동하십시오 .
  3. my.ini파일 위치를 변경하는 경우 위에 나열된 서비스 명령 레지스트리 키에서 경로를 업데이트해야합니다.
  4. my.ini파일을 열고 datadir매개 변수를 찾으십시오 . 이 datadir경로 에서 파일이있는 경로로 파일을 이동 한 다음 datadir이 새 경로로 매개 변수를 업데이트하십시오 .
  5. mysql을 시작하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.