2012-05-18 2 views
2

EC2에서 실행 중이며 MYSQL의 datadir을 다른 EBS에 갖고 싶습니다./data에 EBS (ext3)를 마운트하고 my.cnf의 datadir을 해당 디렉토리를 가리 키도록 변경했습니다. 그러나 mysql을 시작하려고하면 다음 오류가 발생합니다.mysql 아마존 ec2 "테스트 파일을 만들 수 없습니다"오류

120518 03:53:17 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 
120518 03:53:28 mysqld_safe Starting mysqld daemon with databases from /data/mysql/ 
120518 3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test 
120518 3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test 
/usr/libexec/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13) 
120518 3:53:28 [ERROR] Aborting 

120518 3:53:28 [Note] /usr/libexec/mysqld: Shutdown complete 

120518 03:53:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 

아이디어가 있으십니까?

답변

0

/data 디렉토리의 소유자를 mysqld 프로세스 소유자 (chown owner/data)로 변경하십시오. 또는 (chmod 777 -R/data) 매우 안전하지 않습니다.

4

우분투와 같은 배포판에서 실행중인 경우 AppArmor는 mysqld가 다른 디렉토리의 파일에 액세스하지 못하도록 막는 것일 수 있습니다. 시스템 로그 파일을 검사하면이 효과에 대한 이상한 오류 메시지가 나타납니다.

솔루션은 다음과 같습니다 (복잡)

  • 를 사용하여 MySQL이 생각 데이터 파일 있는지 확인하는 "바인드 마운트"

    1. 안 AppArmor의를 (권장하지 않음)

    2. 편집 AppArmor의 규칙 실제로 EBS 볼륨에있는 동안 원래 위치에 있습니다. 변경 사항을 datadir로 되돌립니다.

    나는 다시에 대한 지역 사회 모범 사례를 설명 아마존 년에 대한 기사를 쓴 정확히 당신이 마운트 바인드 예를 들어 명령을 포함하려고 노력하고 있습니다 :

    Running MySQL on Amazon EC2 with EBS
    http://ec2ebs-mysql.notlong.com

    주 그 문서의 AMI ID를 늙었 어. 현대적인 Ubuntu AMI를 사용하면 mkfs.xfs 및/etc/fstab에서/dev/sdh를/dev/xvdh로 바꾸어야합니다 (ec2 도구 명령 줄에서는 제외).

  • 0

    우분투를 실행중인 경우 apparmor 서비스로 인해이 오류가 발생할 수 있습니다. 이 문제를 해결하려면.

    1) 편집 '/etc/apparmor.d/usr.sbin.mysqld'와이 라인을 추가 :

    /opt/lib/mysql/ r, 
    
    /opt/lib/mysql/** rwk, 
    
    (assuming your new data directory is in /opt/lib/mysql) 
    

    2) 다시 시작 그것을 해결하기 위해, 다음을 수행해야합니다 apparmor 서비스 :

    sudo service apparmor restart 
    
    관련 문제