ทำไมการติดตั้ง MySQL 5.6 บน Ubuntu 14.04 จึงล้มเหลว


30

ฉันต้องการดู MySQL 5.6 บน Ubuntu 14.04 จากความอยากรู้ และจากบทความนี้ดูเหมือนว่าการติดตั้งจะง่ายและตรงไปตรงมา ดังนั้นฉันจึงติดตั้งเซิร์ฟเวอร์ขนาดเล็ก AWS EC2 ที่ใช้ Ubuntu 14.04 (64 บิต) เข้าสู่ระบบอินสแตนซ์ที่เก่าแก่ของฉัน (ผ่าน 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
บันทึกพูดว่าอะไร cat /var/log/mysql.err
Paté

คำตอบ:


22

ปัญหาที่คุณพบมีลักษณะเหมือนกับรายงานข้อผิดพลาดนี้ ความล้มเหลวในการเริ่มต้นนั้นเป็นเพราะการกำหนดค่าเริ่มต้นของ MySQL 5.6 ต้องการหน่วยความจำมากกว่าที่จะได้ในอินสแตนซ์ขนาดเล็กของคุณ

วิธีแก้ไขข้อผิดพลาดปรากฏขึ้นให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • เพิ่มจำนวนหน่วยความจำในอินสแตนซ์ EC2 ของคุณ
  • ตั้งค่าให้เล็กลงสำหรับmax_connectionsตัวแปรของ MySQL

1
ใช่ปัญหานี้คือข้อผิดพลาดที่แสดงในรายงานข้อผิดพลาดนั้น ขอบคุณ! จนถึงตอนนี้ฉันได้ลองใช้การแก้ไขด่วนที่แนะนำซึ่งก็เพื่อรับประกันว่า /etc/apparmor.d/local/usr.sbin.mysqld มีอยู่และน่าเสียดายที่มันไม่ได้ทำ ดังนั้นตอนนี้ฉันจะลองติดตั้งด้วยหน่วยความจำเพิ่มเติม
WebLearner

1
สำหรับลองต่อไปแทนการใช้อินสแตนซ์ EC2, ฉันสร้าง Ubuntu 14.04 เครื่องเสมือนกับหน่วยความจำ 2GB ใช้ของ Oracle VM Virtualbox และในสภาพแวดล้อมนี้การติดตั้ง MySQL 5.6 sudo apt-get install mysql-server-5.6แล่นผ่านโดยไม่ต้องผูกปมใช้ ดังนั้นดูเหมือนว่าอินสแตนซ์ขนาดเล็กของ EC2 ไม่มีหน่วยความจำเพียงพอที่จะติดตั้ง MySQL 5.6 โดยใช้ apt-get!
WebLearner

1
ความคิดเห็นเพิ่มเติมถูกเพิ่มเข้าไปในรายงานข้อผิดพลาดที่แนะนำให้ลด max_connections ของ MySQL ก่อนติดตั้ง MySQL 5.6 ฉันใช้คำแนะนำนั้นและเพิ่มไฟล์. cnf ไปยัง /etc/mysql/conf.d ที่มีสองบรรทัด: "[mysqld]" และ "max_connections = 20" เมื่อติดตั้งไฟล์นี้แล้วการติดตั้ง MySQL ของฉันบนไมโคร EC2 ที่สดใหม่แล่นผ่าน (ตามเอกสารประกอบค่าเริ่มต้นสำหรับ max_connections คือ 151 การตั้งค่าเป็น 20 อาจเป็นอย่างมาก แต่อย่างน้อยก็แสดงให้เห็นว่าเป็นไปได้ที่จะติดตั้ง MySQL)
WebLearner

สำหรับข้อมูลเพิ่มเติม: ฉันตรวจสอบ /var/lib/dpkg/info/mysql-server-5.6.postinst และฉันพบว่าคุณสามารถเรียกใช้สคริปต์เพื่อทำซ้ำขั้นตอนที่แน่นอนที่ล้มเหลว
shakaran

มันทำงานกับคนจรจัดของฉันฉันได้ตั้งค่า RAM 1G และแก้ไข ขอขอบคุณ. : D
Chu-Siang Lai

24

ฉันพบปัญหาเดียวกันเมื่อฉันเริ่ม VPS เล็ก ๆ ของฉัน ปัญหานี้เกิดจากหน่วยความจำขนาดเล็ก ดังนั้นโดยไม่ต้องใช้เงินเพิ่มเพื่อเพิ่มหน่วยความจำที่คุณไม่ต้องการคุณสามารถสร้างไฟล์สลับเพื่อช่วยในการติดตั้ง ใช่การสลับช้า แต่สิ่งที่คุณต้องทำก็คือการติดตั้งให้เสร็จ

บน Ubuntu 14.04 ฉันทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา:

สร้างไฟล์ swap 4G:

sudo fallocate -l 4G /swapfile

เปลี่ยนการอนุญาตเป็น root เท่านั้นที่สามารถเข้าถึงและเปลี่ยนแปลงได้:

sudo chmod 600 /swapfile

ทำให้มันสลับ:

sudo mkswap /swapfile

เปิดใช้งาน:

sudo swapon /swapfile

ตอนนี้คุณสามารถลองติดตั้ง MySQL อีกครั้งมันควรจะประสบความสำเร็จในครั้งนี้ เพียงจำไว้ว่าให้ลบการติดตั้งที่ไม่สำเร็จก่อนหน้านี้ออกก่อนที่จะทำเช่นนั้น


ใช่คำตอบที่สมบูรณ์แบบ ยอดเยี่ยมอย่างแน่นอน
นกกระจิบ

3

ฉันพบปัญหาเดียวกัน แม้ว่าฉันจะมีหน่วยความจำขนาดใหญ่พอ 12Gb ที่มอบให้กับ VM ของฉัน แต่ก็ยังมีสิ่งต่าง ๆ ที่ล้มเหลวตามคำถาม หลังจากใช้เวลาพอสมควรพบว่าค่าเริ่มต้นที่เหมาะสมรับหายไปบางส่วนของการแปลการกำหนดค่าและแพคเกจการแปลเครื่องมือ

พื้นที่เก็บข้อมูล MySQL ที่ฉลาดมีวิธีที่ง่ายและสะดวกในการติดตั้งและปรับปรุงผลิตภัณฑ์ MySQL apt-getด้วยแพคเกจซอฟต์แวร์ใหม่ล่าสุดโดยใช้ นี่คือสิ่งที่คุณต้องทำตาม:

  1. การเพิ่ม MySQL APT Repository ก่อนอื่นให้เพิ่มที่เก็บ MySQL apt ไปยังรายการที่เก็บซอฟต์แวร์ของระบบของคุณ ทำตามขั้นตอนเหล่านี้:

    • ไปที่หน้าดาวน์โหลดสำหรับพื้นที่เก็บข้อมูล MySQL ฉลาดที่http://dev.mysql.com/downloads/repo/apt/

    • เลือกและดาวน์โหลดแพ็คเกจการเปิดตัว

    • ติดตั้งแพ็กเกจรีลีสที่ดาวน์โหลดมาด้วยคำสั่งต่อไปนี้แทนที่ version-specific-package-name ด้วยชื่อของแพ็กเกจที่ดาวน์โหลด (นำหน้าด้วยพา ธ หากคุณไม่ได้รันคำสั่งภายในโฟลเดอร์ที่มีแพ็คเกจ):

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

    โปรดทราบว่าแพ็คเกจเดียวกันนี้ใช้งานได้บนแพลตฟอร์ม Debian และ Ubuntu ที่รองรับทั้งหมด

    • ระหว่างการติดตั้งแพคเกจคุณจะถูกขอให้เลือกรุ่นของเซิร์ฟเวอร์ MySQL และส่วนประกอบอื่น ๆ (เช่น MySQL Workbench) ที่คุณต้องการติดตั้ง หากคุณไม่แน่ใจว่าจะเลือกรุ่นใดอย่าเปลี่ยนตัวเลือกเริ่มต้นที่เลือกไว้สำหรับคุณ คุณยังสามารถเลือกไม่มีหากคุณไม่ต้องการให้มีการติดตั้งส่วนประกอบเฉพาะ หลังจากเลือกตัวเลือกสำหรับส่วนประกอบทั้งหมดแล้วให้เลือกตกลงเพื่อสิ้นสุดการกำหนดค่าและการติดตั้งแพ็กเกจปล่อย

    คุณสามารถเปลี่ยนตัวเลือกของคุณสำหรับรุ่นภายหลังได้เสมอ
    ดูคำแนะนำในการเลือกรุ่นที่วางจำหน่ายหลัก

    • อัปเดตข้อมูลแพ็กเกจจากที่เก็บ MySQL APT ด้วยคำสั่งต่อไปนี้ (ขั้นตอนนี้บังคับใช้):

      sudo apt-get update
      
  2. การติดตั้ง MySQL ด้วย APT

    • ติดตั้ง 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

ฉันพบปัญหานี้ใน Ubuntu 15.10 สำหรับฉันมันไม่ใช่ปัญหาหน่วยความจำ (ฉันมี 2GB ram และ 18GB of swap ซึ่งมีการใช้งานทั้งหมดเพียง 300MB เท่านั้น)

ในกรณีของฉันdpkgกำลังมองหา/etc/mysql/conf.dซึ่งไม่มีอยู่จริง (แต่/etc/mysql/mysql.conf.dก็ทำได้!) การติดตั้ง MySQL ใหม่อีกครั้งและสร้างโฟลเดอร์ด้วยตนเอง/etc/mysql/conf.dแก้ไขปัญหาของฉันได้

สิ่งนี้เกิดขึ้นได้อย่างไร? ฉันไม่รู้. ฉันแทบไม่ต้องการแบ่งปันคำตอบของฉันเนื่องจากฉันคิดว่าโซลูชันนี้เฉพาะกับคอมพิวเตอร์ของฉัน

ฉันแก้ไขปัญหานี้โดยใช้ยูทิลิตี้straceซึ่งเป็นสิ่งที่ยอดเยี่ยมสำหรับสิ่งนี้ถ้า verbose อย่างไม่น่าเชื่อ

ฉันใช้มันแบบนี้:

  • หลังจากกดไป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 ใหม่อีกเพียงลบ 2 log files แล้วรีสตาร์ทเซิร์ฟเวอร์ 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.