Ubuntu Server 10.04에서 MySQL 데이터 디렉토리 변경


9

우분투 서버 10.04에서 데이터 디렉토리를 변경하려고 할 때 다음 오류가 발생했습니다.

100809 19:33:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 19:33:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 19:33:00  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

2
... 당신의 질문은? 폴더의 내용 만 이동하고 파일이없는 경우 모든 InnoDB 테이블 내용이 손실됩니다.
bobince

질문 / 스푼이 없습니다. 이것이 주변 사람들에게 흥미로울 수 있다고 생각했습니다. InnoDB 테이블 내용에 대한 좋은 지적!

2
자신의 질문에 대답하고 싶지만 시간을내어 실제로 질문을하고 답을 답변으로 제공하십시오.
Zoredache

답변:


8

권한에 대한 일반적인 혼란으로 OP는 문제가 자신에게 권한 및 경로 권한이 없다는 것이 아니라 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
  >> add lines
     /new-mysql-dir/ r,
     /new-mysql-dir/** rwk,

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

$ sudo vim /etc/mysql/my.cnf 
  >> change the line
     datadir=/var/lib/mysql
  >> to
     datadir=/my-new-db-dir/

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

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

$ sudo /etc/init.d/apparmor restart

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

$ sudo start mysql

2
물론 두 개의 datadir 위치가 별도의 파티션에 있지 않으면 파일을 이동하는 대신 파일을 새 위치에 연결하여 데이터베이스를 계속 작동시킬 수 있습니다.
cpbills 2016 년

innodb를 사용하는 경우 디렉토리 만 이동하라는 지시가 정확하지 않습니다. 이 경우 innodb 데이터와 로그 파일도 이동해야합니다 (ibdata *, ib_logfile *).
hillel

나만큼 부주의 한 사람들을위한 메모. AppArmor 구성의 경로에 후행 슬래시가 있어야합니다. /new-mysql-dir/ r그렇지 않으면 여전히 거부됩니다. 기본 Linux 물건이지만 후행 슬래시를 올바르게 얻을 수는 없습니다.
Jeff

나는 여전히 AppArmor에 의해 거부당했습니다. 이 스레드 는 최종 장애물을 극복하는 데 도움 되었습니다.
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.