it-swarm-ko.tech

MySQL 데이터 파일을 다른 파티션으로 옮기는 방법은 무엇입니까?

두 개의 파티션으로 분할 된 하드 드라이브가 있으므로 홈 디렉토리 데이터를 잃지 않고 Ubuntu를 쉽게 다시 설치하고 다른 버전을 시험해 볼 수 있습니다. 다음과 같이 설정됩니다 :

20GB  -> /     (root)
180GB -> /home 

개발 작업이 많으므로 /var/www/home/valorin/workspace 폴더가 심볼릭 링크되어 있습니다.

그러나 MySQL 데이터 파일 로이 작업을 수행하고 싶습니다. 시스템을 다시 설치할 때마다 전체 SQL 덤프를 수행 한 다음 더 많은 작업을 수행하기 전에 모든 DB를 복원해야한다는 성가심이 생깁니다.

MySQL을 중단하지 않고 가장 좋은 방법은 무엇입니까?

28
Stephen RC

글쎄, 실제로이 질문에 대한 잠재적 우분투 특정 답변이 있습니다.

Gergoes 링크에서 언급했듯이 이것은 기본적으로 /etc/mysql/my.cnf 를 수정하고 datadir =에 대한 새 값을 [mysqld] 섹션. 지금까지 답변의 불특정 부분.

다소 현대적인 버전의 우분투를 실행한다고 가정하면 기본적으로 AppArmor 이 설치되어 있고 /usr/sbin/mysqld 에 대한 프로필이 강제 모드. 기본 프로필은 새 datadir을 허용하지 않을 가능성이 높습니다.

새 datadir이 /home/data/mysql 이라고 가정합니다.

파일 /etc/apparmor.d/usr.sbin.mysqld 를 열면 규칙 중이 두 줄을 찾을 수 있습니다.

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

위의 예를 가정하면이 두 줄로 대체되거나 (아마도 바람직 할) 보완되어야합니다.

/home/data/mysql/ r,
/home/data/mysql/** rwk,

새로운 datadir을 사용하여 MySQL 서버를 시작하기 전에 새로운 apparmor 프로파일을 명시 적으로 다시로드해야합니다.

$ Sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
31
andol

슈퍼 유저는이 probelm을 해결하는 방법에 대한 단계별 지침이 훌륭합니다

다음은 동일한 일을 수행하는 다른 지침입니다 http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html

여기에 다시 게시됩니다. 수퍼 유저 인 경우 원본에 대한 투표를하십시오.

권한에 대한 일반적인 혼란 후 문제는 내가 권한과 경로를 가지고 있지 않은 것이 아니라 AppArmor가 mysql이 새 위치를 읽고 쓰지 못하게한다는 것을 깨달았습니다.

이것은 내 솔루션입니다.

먼저 MySQL을 중지하십시오. 따라서 이상한 일이 발생하지 않습니다.

$ Sudo stop mysql

그런 다음 모든 데이터베이스 디렉토리를 새 홈으로 이동하십시오.

$ Sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

파일을 이동하지 마십시오. mysql에 의해 생성되며 폴더 (데이터베이스)를 이동하십시오.

그런 다음 mysql이 새 폴더를 사용할 수 있도록 AppArmor에게 정중하게 요청하십시오.

$ Sudo vim /etc/apparmor.d/usr.sbin.mysqld

라인 추가 :

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

그런 다음 mysql에게 datadir이 이동했음을 알리십시오.

$ Sudo vim /etc/mysql/my.cnf 

줄을 바꾸십시오 :

datadir=/var/lib/mysql

에:

datadir=/my-new-db-dir/

참고 : 데이터베이스 설정에 따라 innodb-data-home-dir 등을 변경해야 할 수도 있습니다.

그런 다음 AppArmor를 다시 시작하여 새 설정을 읽으십시오.

$ Sudo /etc/init.d/apparmor restart

그리고 새로운 datadir을 사용하여 MySQL을 다시 시작하십시오 :

$ Sudo start mysql

도움이 되었기를 바랍니다!

4
nelaaro

내가 VirtualBox로 작업하고 MySQL datadir을 호스트 시스템의 공유 폴더로 이동 해야하는 사람들을 위해 http://vacilando.org/en/article/moving-mysql-data의 간단한 자습서를 따르십시오. -files-virtualbox 공유 폴더

0
Vacilando

이것은 실제로 우분투 특정이 아닙니다. 그럼에도 불구하고 여기 도움이 될만한 것이 있습니다 : http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location

0
Nathan Osman