ฉันจะอัพเกรด MySQL ใน Debian โดยใช้ apt-get ได้อย่างไร


13

ฉันใช้เครื่องเสมือน Turnkey Linux เวอร์ชั่นของ Debian นั้นเห็นได้ชัดบนเส้นทางอัพเกรด "Wheezy" (ถ้านั่นคือสิ่งที่คุณเรียก) ฉันไม่สะดวกสบายกับ Linux อย่างที่คุณเห็น

ฉันต้องการคุณสมบัติใหม่ที่ MySQL 5.6 มีให้ในขณะที่การติดตั้งปัจจุบันของฉันคือ MySQL 5.5.35 ฉันต้องการรับรุ่นล่าสุด (5.6.17 ณ การโพสต์นี้) หรืออย่างน้อย 5.6.x

ฉันพยายามapt-get updateแล้วapt-get upgrade, apt-get dist-upgrade. สิ่งเหล่านี้อัปเดตสิ่งต่าง ๆ ได้สำเร็จ แต่ไม่มี MySQL ฉันพยายามapt-get upgrade mysql-serverซึ่งบอกว่าฉันมีเวอร์ชันล่าสุดแล้ว

รายการพื้นที่เก็บข้อมูลแพคเกจ Debian Wheezy บนเว็บแสดง MySQL 5.5 และไม่มีอะไรอื่นเมื่อฉันต้องการ 5.6 จากนั้นฉันก็อ่านอะไรบางอย่างเกี่ยวกับ "backport" ซึ่งฟังดูเหมือนว่าจะทำให้ฉันได้รับสิ่งที่ Debian เฉพาะของฉันไม่ควรมี - แต่ดูเหมือนว่าฉันจะไม่สามารถทำงานได้ /etc/apt/sources.list.d/sources.listมันต้องมีการเพิ่มสายที่จะ เมื่อฉันลองทำสิ่งนั้นจากนั้นทำงานapt-get updateฉันได้รับข้อผิดพลาด 404 ครั้ง

ฉันได้ลองเส้นทางอื่น ๆ แล้วเช่นกันกำลังมีการรวบรวมวานิลลา MySQL ดาวน์โหลดซึ่งฉันล้มเหลวอย่างน่าสังเวชและจะไม่ลองอีกครั้ง

ฉันงุนงงในเชิงบวกเกี่ยวกับวิธีการทำสิ่งนี้ URL ส่วนใหญ่ที่อยู่ในฟอรัม / บล็อกapt-getและwgetดูเหมือนว่าจะตายในไม่ช้าหลังจากที่โพสต์ดังนั้นฉันไม่เข้าใจเลยว่าใครจะไปหาข้อมูลที่ถูกต้อง ฉันพยายามทำสิ่งนี้มาสองวันแล้วและไม่สามารถไปไหนมาไหนได้

ดังนั้นสมมติว่าคุณอ่านมาได้ไกลฉันอยากจะรู้ว่าถ้าใครมีวิธีอัพเกรด MySQL ใน Debian ด้วยวิธีอัตโนมัติที่ไม่เจ็บปวดบ้าง (ที่ที่ฉันไม่ต้องใช้makeหรือส่งออก / นำเข้าฐานข้อมูลปัจจุบันของฉันและกำหนดค่าด้วยตนเอง )


ทำ backport จากการทดสอบ / ไม่เสถียร / ทดลอง ดูฉันจะติดตั้งซอฟต์แวร์รุ่นใหม่กว่าที่ Debian มีให้ได้อย่างไร . ดีกว่าใช้ PostgreSQL ซึ่งมี backport อยู่แล้ว คุณเขียน "มันต้องมีการเพิ่มบรรทัดใน /etc/apt/sources.list.d/sources.list เมื่อฉันลองทำเช่นนั้นจากนั้นเรียกใช้การปรับปรุง apt-get ฉันได้รับข้อผิดพลาด 404" คุณต้องเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้หากคุณต้องการความช่วยเหลือ
Faheem Mitha

@faheemMitha ไม่อยากรู้อยากเห็นคุณพบ backgresql backport เหล่านั้นที่ไหน? ฉันต้องการรุ่นใหม่และslonyความสามารถและฉันไม่สามารถหารุ่นที่ใหม่กว่า 9.1 ซึ่งขาดความเป็นทาส
Shadur

@Shadur: เพียงทำการค้นหา "postgresql debian backports" ผมคิดว่าสิ่งที่คุณต้องการคือpostgresql.org/download/linux/debian บ่อยครั้งที่คุณสามารถรับ backport จาก backports.debian.org ได้ แต่ดูเหมือนว่าในปัจจุบันนั้นยังไม่มีให้บริการ
Faheem Mitha

@faheemMitha ฉันจะวางข้อผิดพลาดแบบเต็ม แต่ฉันไม่มีอีกต่อไปและฉันไม่แน่ใจว่า URL backport นั้นเป็นที่ฉันใช้อีกต่อไป หากคุณยังรู้เกี่ยวกับบรรทัดการทำงานที่ฉันสามารถเชื่อมต่อกับแหล่งรายการของฉันสำหรับ backport ฉันชอบที่จะลอง PS การเปลี่ยนไปใช้แพลตฟอร์มฐานข้อมูลอื่นนั้นไม่ใช่ตัวเลือกที่ดีสำหรับฉันในตอนนี้
equazcion

@equazcion คำแนะนำของฉันคือโซลูชัน DIY ดึงข้อมูลแหล่ง Debian จากการทดสอบ (หรือไม่เสถียรหรือทดลอง) และสร้างใหม่ในแพ็คเกจ Debian ของคุณเอง สิ่งนี้ไม่ได้ยากขนาดนั้นและ MySQL ก็ไม่น่าจะแก้ไขการพึ่งพาได้ยาก ฉันอธิบายขั้นตอนพื้นฐานในคำตอบที่ฉันเชื่อมโยง คุณดูมันเหรอ?
Faheem Mitha

คำตอบ:


4

การสร้างแหล่งข้อมูล MySQL 5.6 แหล่งทดลองใหม่จากการทดลองบน wheezy นั้นมีพรมแดนติดที่ไม่สำคัญ อย่างไรก็ตามคุณจะต้องใช้พื้นที่ดิสก์จำนวนมาก หลังจากการสร้างเสร็จสมบูรณ์ไดเรกทอรีการสร้างใช้ 5.2 GB นอกจากนี้ยังใช้เวลาสักครู่ในการสร้างและทำการทดสอบจำนวนมากอย่างไม่น่าเชื่อ ฉันไม่ได้ยุ่งกับเวลา แต่ให้เวลาสองสามชั่วโมง เป็นไปได้ที่จะปิดการใช้งานการทดสอบ แต่ฉันขอแนะนำให้ให้พวกเขาทำงาน - มันไม่เป็นอันตรายตราบใดที่พวกเขาผ่าน พวกเขาทำในเครื่องของฉัน ข่าวดีก็คือฉันสามารถสร้างและติดตั้งได้โดยไม่ต้องยุ่งยาก ฉันวิ่งทดสอบพื้นฐานต่อไปนี้

faheem@orwell:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.6.16-1~exp1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

ดังนั้นฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์อย่างน้อย นี่คือลักษณะของแพ็คเกจที่ติดตั้ง:

$ dpkg -l | grep mysql

ii  libdbd-mysql-perl                     4.021-1+b1              amd64                   Perl5 database interface to the MySQL database
ii  libmysqlclient18:amd64                5.5.35+dfsg-0+wheezy1   amd64                   MySQL database client library
ii  libqt4-sql-mysql:amd64                4:4.8.2+dfsg-11         amd64                   Qt 4 MySQL database driver
ii  mysql-client-5.6                      5.6.16-1~exp1           amd64                   MySQL database client binaries
ii  mysql-client-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database core client binaries
ii  mysql-common                          5.5.35+dfsg-0+wheezy1   all                     MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-common-5.6                      5.6.16-1~exp1           all                     MySQL 5.6 specific common files, e.g. /etc/mysql/conf.d/my-5.6.cnf
ii  mysql-server-5.6                      5.6.16-1~exp1           amd64                   MySQL database server binaries and system database setup
ii  mysql-server-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database server binaries
ii  python-mysqldb                        1.2.3-2                 amd64                   Python interface to MySQL

นี่คือรายละเอียดของขั้นตอน

  1. หากคุณติดตั้งแพกเกจ MySQL 5.5 ที่ดังมากให้ลบออกมันจะทำให้เกิดปัญหาในภายหลัง หากมีแพ็กเกจใด ๆ ที่ขึ้นอยู่กับสิ่งเหล่านั้นพวกเขาจะต้องไปด้วย
  2. ก่อนอื่นรับแหล่งที่มา คุณต้องเพิ่มสิ่งต่อไปนี้ (หรือคล้ายกันปรับสำหรับเซิร์ฟเวอร์ที่คุณต้องการ) เพื่อ/etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. /etc/apt/preferencesนอกจากนี้ยังเพิ่มต่อไปนี้

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. จากนั้นเรียกใช้

    apt-get update
    
  5. จากนั้นเรียกใช้

    apt-get source mysql-5.6
    

    ในไดเรกทอรีที่เหมาะสม ฉันมักจะสร้างไดเรกทอรีใน/usr/local/src, ในกรณีนี้กล่าวว่า
    /usr/local/src/mysql

  6. cd /usr/local/src/mysqlแล้วเป็น

  7. วิ่ง

    sudo apt-get build-dep mysql-5.6
    

    บนเครื่องของฉันติดตั้งแพคเกจสองสามอย่าง

  8. ติดตั้งแพ็คเกจพื้นฐานสำหรับการสร้าง

    apt-get install build-essential devscripts fakeroot
    

    จากนั้น cd ลงในไดเรกทอรีแหล่งผลลัพธ์/usr/local/src/mysql/mysql-5.6- 5.6.16และเรียกใช้

    debuild -uc -us
    

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

    หากคุณไม่ต้องการรันการทดสอบคุณสามารถใช้แทนได้

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. ตอนนี้คุณควรติดตั้ง libdbd-mysql-perl ซึ่งเป็นการพึ่งพารันไทม์ของแพ็คเกจ mysql

     apt-get install libdbd-mysql-perl
    
  10. cd /usr/local/src/mysqlแล้วขึ้นระดับหนึ่งไปยัง ควรมีแพ็กเกจ deb อยู่บ้าง คุณจะต้องติดตั้งอย่างน้อย

     mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    

    สิ่งนี้สามารถทำได้โดยการเรียกใช้:

     dpkg -i mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    

ก่อนอื่นขอขอบคุณสำหรับสิ่งนี้และความพยายามทั้งหมดที่คุณใส่เข้าไปสิ่งนี้ล้มเหลวในขั้นตอนที่ 8 ฉันดูเหมือนจะไม่มี / debian / path เหล่านี้: dpkg-buildpackage: host architecture amd64 fakeroot debian/rules clean Can't exec "fakeroot": No such file or directory at /usr/bin/dpkg-buildpackage line 510. dpkg-buildpackage: error: fakeroot debian/rules clean failed with unknown exit code -1 debuild: fatal error at line 1357: dpkg-buildpackage -rfakeroot -D -us -uc failed ฉันทำสิ่งนี้ใน Turnkey Linux ซึ่งฉันคิดว่าใช้ LAMP ถ้าช่วยได้
equazcion

@equazcion คุณอาจยังไม่ได้ติดตั้ง fakeroot apt-get install fakeroot.
Faheem Mitha

การติดตั้ง fakeroot ใช้งานได้ ขั้นตอนสุดท้ายข้อผิดพลาดบอกว่ามันจะทำลาย MySQL 5.5 ฉันเพิกเฉยที่จะลบ 5.5 ตามที่คุณแนะนำเพราะฉันไม่รู้ว่าอย่างไรและฉันไม่แน่ใจว่าจะส่งผลกระทบต่อฐานข้อมูลปัจจุบันของฉันอย่างไร ฉันพร้อมที่จะลองอีกครั้งหลังจากลบ 5.5 หากคุณต้องการบอกฉันเกี่ยวกับการดำเนินการในลักษณะที่จะทำให้ข้อมูลของฉันพร้อมใช้งานในเวอร์ชันใหม่ ฉันรู้ว่าคุณยังไม่คุ้นเคยกับ MySQL และคุณใช้เวลาไปกับเรื่องนี้อยู่แล้ว นี่เป็นจุดเริ่มต้นที่ยอดเยี่ยมและฉันสามารถค้นหาวิธีที่เหลือด้วยการไปเที่ยวรอบ ๆ
equazcion

@equazcion ตามdev.mysql.com/doc/refman/5.6/en/ ......คุณเพียงแค่ต้องถ่ายโอนข้อมูลด้วยmysqldumpแล้วโหลดไฟล์ดัมพ์อีกครั้ง สำรองฐานข้อมูลของคุณด้วยเช่นกัน
Faheem Mitha

จัดการเพื่อกอบกู้สิ่งนี้โดยไม่ต้องทำซ้ำทุกขั้นตอนและไม่จำเป็นต้องนำเข้าฐานข้อมูลอีกครั้งพวกเขาอยู่ที่นั่นแล้ว สำหรับใครที่สนใจฉันต้องทำapt-get remove mysql-serverและapt-get remove mysql-clientต้องทำapt-get install libterm-readkey-perlก่อนขั้นตอนสุดท้ายด้วย และต้องmysql-server-coreติดตั้งในขั้นตอนสุดท้ายก่อนหน้าmysql-serverนี้ด้วย ตอนนี้ฉันกำลังใช้งาน MySQL 5.6.16 อย่างเป็นทางการและได้ทำการทดสอบดัชนีการค้นหา InnoDB ฉบับเต็มเรียบร้อยแล้ว (เหตุผลที่ฉันต้องการ) ขอบคุณ Faheem Mitha คุณช่วยรักษาสติของฉัน
equazcion

6

ปัจจุบันตัวเลือกที่ดีที่สุดคือใช้repo MySQL APTอย่างเป็นทางการซึ่งอนุญาตให้apt-get upgradeติดตั้งได้


นี่อาจเป็นทางออกที่ดีที่สุดเพราะไม่จำเป็นต้องติดตั้งคอมไพเลอร์ เพิ่มเติมหลักฐานโง่ :)
คริสชูลท์ซ

วิธีนี้ใช้ได้ผลสำหรับฉัน หลังจากติดตั้งแล้วให้เลือกเวอร์ชันเซิร์ฟเวอร์ mysql และอัพเกรดapt-get upgradeจากนั้นทำapt-get upgrade mysql-serverและอัพเกรด mysql จาก 5.5 เป็น 5.7 ได้ง่าย หลังจากอัปเกรดคุณจำเป็นต้องกำหนดค่าอีกครั้งและดำเนินการ:mysql_upgrade -u root
fermin

1

ผ่านการทดสอบทั้งหมดขอให้สนุก

  1. .apt-get install libaio1
  2. groupadd mysql
  3. useradd -r -g mysql mysql
  4. wget -O mysql-5.6.16-debian6.0-x86_64.deb
  5. http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.16-debian6.0-x86_64.deb
  6. dpkg -i mysql-5.6.16-debian6.0-x86_64.deb
  7. cd / usr / local
  8. ln -s /opt/mysql/server-5.6 mysql
  9. cd mysql
  10. สคริปต์ / mysql_install_db --user = mysql
  11. chown -R root
  12. chown -R ข้อมูล mysql
  13. cp support-files / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. echo $ '! include /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/'> my.cnf
  17. บริการ mysql เริ่มต้น
  18. ./bin/mysql_secure_installation

นี้ดูเหมือนจะเป็นไปด้วยดีจนกระทั่งนี่ (ขอโทษสำหรับระเบียบผมไม่ทราบวิธีการแทรกตัวแบ่งบรรทัดที่นี่): root@lamp local/mysql# update-rc.d mysql-5.7 defaults: update-rc.d: using dependency based boot sequencing update-rc.d: error: unable to read /etc/init.d/mysql-5.7 root@lamp local/mysql# service mysql start: Starting MySQL [FAIL......[....] The server quit without updating PID file (/opt/mysql/server-5.6/data/lamp.pid). ... failed!
equazcion

ลองกับ /etc/init.d/mysql เริ่มหรือลองกด tab-tab ที่ /etc/init.d/mys แล้วเริ่มมัน
Security Beast

@equazcion ขอแสดงความยินดีตอนนี้คุณได้ค้นพบว่าทำไมเดเบียนบางครั้งใช้เวลาสักครู่ในการคิดแพ็คเกจอย่างเป็นทางการสำหรับเวอร์ชันใหม่
Shadur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.