Ubuntu 14.04에서 MySQL 5.6 설치가 실패한 이유는 무엇입니까?


30

호기심에서 우분투 14.04의 MySQL 5.6을보고 싶었습니다. 그리고이 기사를 기반으로 설치가 간단하고 간단해야합니다. 그래서 우분투 14.04 (64 비트)를 실행하는 AWS EC2 마이크로 서버를 시작하고 PuTTY를 통해 원시 인스턴스에 로그인하고 다음 명령을 실행했습니다.

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(처음 두 개만 실행 apt-get install해도 이전에는 작동하지 않았으므로 처음 두 명령은 절박한 움직임이었습니다 . 그러나 세 명령 모두 사용하더라도 설치 단계는 여전히 작동하지 않았습니다.)

위에서 언급 한 기사를 기반으로 최종 명령 에서이 출력을 볼 것으로 예상 한 시점에서 :

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

대신에 이것을 얻었습니다.

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

아무도 무엇이 잘못되었는지 볼 수 있습니까?


1
통나무는 무엇을 말합니까? 고양이 /var/log/mysql.err
Paté

답변:


22

발생한 문제는 이 버그 보고서같습니다 . 시작 실패는 기본 MySQL 5.6 구성에 마이크로 인스턴스보다 많은 메모리가 필요하기 때문입니다.

오류에 대한 해결책은 다음 중 하나를 수행하는 것으로 보입니다.

  • EC2 인스턴스의 메모리 양을 늘리십시오
  • MySQL max_connections변수 의 값을 작게 설정하십시오

1
예,이 문제는 해당 버그 보고서에 표시된 오류입니다. 감사! 지금까지 /etc/apparmor.d/local/usr.sbin.mysqld가 존재하는지 확인하기 위해 제안 된 빠른 수정을 시도했지만 불행히도 그렇게하지 못했습니다. 이제 더 많은 메모리로 설치를 시도합니다.
WebLearner

1
다음 시도에서는 EC2 인스턴스를 사용하는 대신 Oracle VM Virtualbox를 사용하여 2GB 메모리의 Ubuntu 14.04 가상 머신을 생성했으며이 환경에서 MySQL 5.6 설치는 장애없이 사용되었습니다 sudo apt-get install mysql-server-5.6. 따라서 EC2 마이크로 인스턴스에는 apt-get을 사용하여 MySQL 5.6을 설치하기에 충분한 메모리가없는 것으로 보입니다.
WebLearner

1
MySQL 5.6을 설치하기 전에 MySQL의 max_connections를 줄이는 것을 제안하는 버그 보고서에 추가 의견이 추가되었습니다. 나는 그 조언을 받아 들여서 "[mysqld]"와 "max_connections = 20"이라는 두 줄을 포함하는 .cnf 파일을 /etc/mysql/conf.d에 추가했습니다. 해당 파일을 사용하여 새로운 EC2 마이크로에 MySQL을 설치했습니다. (문서에 따르면 max_connections의 기본값은 151입니다. 20으로 설정하는 것은 극단적 일 수 있지만 적어도 MySQL을 설치할 수 있음을 보여줍니다.)
WebLearner

추가 정보 : /var/lib/dpkg/info/mysql-server-5.6.postinst를 확인
했는데

그것은 내 방랑자에서 일하고 있습니다 .1G RAM을 설정하고 수정했습니다. 고맙습니다. : D
Chu-Siang Lai

24

작은 VPS를 초기화 할 때도 같은 문제가 발생합니다. 이 문제는 작은 메모리로 인해 발생합니다. 따라서 불필요한 메모리를 늘리기 위해 추가 비용을 들이지 않고도 간단히 설치를 돕기 위해 스왑 파일을 만들 수 있습니다. 예, 스왑은 느리지 만 설치 만하면됩니다.

우분투 14.04에서는 문제를 해결하기 위해 다음을 수행합니다.

4G 스왑 파일을 만듭니다.

sudo fallocate -l 4G /swapfile

액세스 권한과 루트 만 액세스 권한으로 변경하십시오.

sudo chmod 600 /swapfile

교체하십시오 :

sudo mkswap /swapfile

활성화 :

sudo swapon /swapfile

이제 mysql을 다시 설치할 수 있습니다. 이번에는 성공할 것입니다. 이전에 실패한 설치를 제거하기 전에 제거해야합니다.


네, 정답입니다. 물론 굉장합니다.
Wren

3

같은 문제가 발생했습니다. 내 VM에 충분한 12Gb 메모리가 주어졌지만 여전히 문제가 발생했습니다. 시간을 보낸 후 기본 apt get에 일부 구성 변환 및 도구 변환 패키지가 누락되었음을 발견했습니다.

MySQL apt 리포지토리는를 사용하여 최신 소프트웨어 패키지로 MySQL 제품을 설치 및 업데이트하는 간단하고 편리한 방법을 제공합니다 apt-get. 따라야 할 사항은 다음과 같습니다.

  1. MySQL APT 리포지토리 추가 먼저, MySQL apt 리포지토리를 시스템의 소프트웨어 리포지토리 목록에 추가하십시오. 이 단계를 따르세요:

    • http://dev.mysql.com/downloads/repo/apt/ 의 MySQL apt 저장소 다운로드 페이지로 이동 하십시오 .

    • 릴리스 패키지를 선택하고 다운로드하십시오.

    • 다음 명령을 사용하여 다운로드 한 릴리스 패키지를 설치하십시오. version-specific-package-name을 다운로드 한 패키지의 이름으로 바꾸십시오 (패키지가있는 폴더 내에서 명령을 실행하지 않는 경우 경로가 선행 함).

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    지원되는 모든 데비안 및 우분투 플랫폼에서 동일한 패키지가 작동합니다.

    • 패키지를 설치하는 동안 설치하려는 MySQL 서버 버전 및 기타 구성 요소 (예 : MySQL Workbench)를 선택하라는 메시지가 표시됩니다. 어떤 버전을 선택해야할지 확실하지 않으면 선택한 기본 옵션을 변경하지 마십시오. 특정 구성 요소를 설치하지 않으려는 경우 없음을 선택할 수도 있습니다. 모든 구성 요소를 선택한 후 확인을 선택하여 릴리스 패키지 구성 및 설치를 완료하십시오.

    나중에 버전에 대한 선택을 언제든지 변경할 수 있습니다.
    지시 사항은 주 릴리스 버전 선택을 참조하십시오.

    • 다음 명령을 사용하여 MySQL APT 저장소에서 패키지 정보를 업데이트하십시오 (이 단계는 필수 임).

      sudo apt-get update
      
  2. APT로 MySQL 설치

    • 다음 명령으로 MySQL을 설치하십시오.

      sudo apt-get install mysql-server
      

이렇게하면 MySQL 서버 패키지와 클라이언트 및 데이터베이스 공통 파일 패키지가 설치됩니다.

설치하는 동안 대화 상자에는 두 가지 요청이 있습니다. MySQL 설치를위한 루트 사용자의 비밀번호를 제공하십시오.

  1. MySQL 서버 시작 및 중지

설치 후 MySQL 서버가 자동으로 시작됩니다. -다음 명령으로 MySQL 서버의 상태를 확인할 수 있습니다.

sudo service mysql status
  • 다음 명령으로 MySQL 서버를 중지하십시오.

    sudo service mysql stop
    
  • MySQL 서버를 다시 시작하려면 다음 명령을 사용하십시오.

    sudo service mysql start
    

나는이 http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install을 따랐다 . 이것은 원활하게 작동하고 모든 패키지를 다운로드하고 성공적으로 설치했습니다 mysql 5.6.


고마워 데이빗. 이것은 말이됩니다. 더 자세한 단계로 답변을 변경했습니다. 감사.
Ritesh

개선 된 답변에 +1.
David Foerster

마지막으로 나였다. .. 정말로 나인가? :)
신속

2

제 경우에는 추가했습니다

innodb_buffer_pool_size = 20M

~로 /etc/mysql/my.cnf


1
사용자가 MySQL을 사용하지 않고 설치하는 데 문제가 있습니다.

감사합니다, 나는 질문을 읽었습니다)) 설치하는 동안 같은 문제가 발생했습니다. 실제로 설치가 완료되었고 mysql이 이미 서비스로 액세스 가능하여 실행할 수있었습니다. 그러나 설치 프로세스의 마지막 단계 (mysqld 시작) 에서이 성가신 오류가 발생합니다.
maxkoryukov


1

우분투 15.10 에서이 문제가 발생했습니다. 나에게 그것은 메모리 문제가 아니었다 (2GB 램과 18GB의 스왑이 있으며 그중 약 300MB 만 사용되었습니다).

내 경우 에는 존재하지 않는을 dpkg찾고 /etc/mysql/conf.d있었지만 (그러나 /etc/mysql/mysql.conf.d)! mysql을 다시 설치하고 수동으로 폴더를 만들면 /etc/mysql/conf.d문제가 해결되었습니다.

정확히 어떻게 이런 일이 일어 났습니까? 나도 몰라 이 솔루션은 내 컴퓨터에만 해당되므로 내 답변을 거의 공유하고 싶지 않았습니다.

유틸리티를 사용 하여이 문제를 해결했습니다.이 기능 strace은 엄청나게 장황한 경우 이런 종류의 일에 환상적입니다.

나는 이것을 다음과 같이 사용했다 :

  • ctrlc반쯤 누른 후 설치를 완료 apt-get install mysql-server하기 위해 실행 dpkg --configure -a해야했습니다.

  • 나는 달렸다 strace 2>/tmp/trace dpkg --configure -a. 그것은 나에게 멋진 strace로그를 만들었습니다 /tmp/trace.

  • 나는 로그를 보았는데, 특히 아래쪽에서 실패했다.

  • 액세스하려고 /etc/mysql/conf.d하고 오류 코드 ENOENT, 해당 파일 또는 디렉토리가 없음 을 알았습니다 .

이 일을하고 싶은 사람은를 위해 strace 2>/tmp/trace (command)grep을 수행하십시오 ENOENT. 내가 말했듯이,이 솔루션은 아마도 내 컴퓨터에만 국한되어 있지만 당신은 그것을 원할 수도 있습니다.


0

내 경우에는 모두 내가 할 필요 것은에서 일부 내용을 변경했다 my.cnf단지 2 로그 파일 이름을 삭제 ib_logfile0하고 ib_logfile1,와 MySQL을 시작합니다

service mysql start

mysql을 다시 설치할 필요가 없습니다.이 두 로그 파일을 삭제하고 mysql 서버를 다시 시작하십시오.

내가 변경 한 내용은 다음과 my.cnf같습니다.

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 

다른 사람이 팔로우 할 수 있도록 답변에 조금 더 추가하십시오.
George Udosen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.