Bagaimana saya bisa meningkatkan MySQL di Debian menggunakan apt-get?

13

Saya menggunakan mesin virtual Turnkey Linux. Versi Debian di sana tampaknya ada di jalur peningkatan "Wheezy" (jika Anda menyebutnya). Saya tidak sepenuhnya nyaman dengan Linux, seperti yang Anda lihat.

Saya memerlukan beberapa fitur baru yang ditawarkan MySQL 5.6, sedangkan instalasi saya saat ini adalah MySQL 5.5.35. Saya ingin mendapatkan versi terbaru (5.6.17 pada posting ini) atau setidaknya 5.6.x.

Saya sudah mencoba apt-get update, apt-get upgrade, apt-get dist-upgrade. Ini berhasil memperbarui banyak hal, tetapi tidak ada yang MySQL. Saya mencoba apt-get upgrade mysql-server, yang mengatakan saya sudah memiliki versi terbaru.

Daftar repositori paket Debian Wheezy di web menunjukkan MySQL 5.5 dan tidak ada yang lain, ketika saya membutuhkan 5.6. Saya kemudian membaca sesuatu tentang "backports", yang kedengarannya seperti itu bisa membuat saya mendapatkan hal-hal yang belum seharusnya dilakukan oleh Debian saya - tetapi saya sepertinya tidak bisa membuatnya bekerja. Ini membutuhkan penambahan baris ke /etc/apt/sources.list.d/sources.list. Ketika saya mencoba melakukan itu, kemudian berjalan apt-get update, saya mendapatkan 404 kesalahan.

Saya juga sudah mencoba beberapa rute lain, salah satunya mengkompilasi unduhan MySQL vanilla, yang saya gagal dengan menyedihkan dan lebih baik tidak mencoba lagi.

Saya bingung bagaimana hal ini dilakukan. Sebagian besar URL yang tercantum di forum / blog untuk apt-get, dan bahkan untuk wget, tampaknya mati segera setelah mereka diposting, jadi saya tidak dapat memahami bagaimana orang bahkan pergi mencari informasi yang tepat. Saya sudah mencoba melakukan ini selama dua hari berturut-turut sekarang dan tidak bisa ke mana-mana.

Jadi dengan asumsi Anda sudah membaca sejauh ini, saya ingin tahu jika ada yang punya cara untuk meningkatkan MySQL di Debian dalam beberapa cara otomatis yang relatif tidak menyakitkan (di mana saya tidak perlu menggunakan makeatau mengekspor / mengimpor basis data dan konfigurasi saya saat ini secara manual ).

penggugusan
sumber
Lakukan backport dari pengujian / tidak stabil / eksperimental. Lihat Bagaimana saya bisa menginstal versi perangkat lunak yang lebih baru daripada yang disediakan Debian? . Lebih baik, gunakan PostgreSQL, yang sudah memiliki backports. Anda menulis "Perlu menambahkan baris ke /etc/apt/sources.list.d/sources.list. Ketika saya mencoba melakukan itu, kemudian menjalankan pembaruan apt-get, saya mendapatkan 404 kesalahan." Anda perlu menambahkan detail lebih lanjut tentang ini jika Anda ingin bantuan.
Faheem Mitha
@faheemMitha Karena penasaran, dari mana Anda menemukan backports postgresql itu? Saya agak membutuhkan versi dan slonykemampuan baru dan saya tidak dapat menemukan yang lebih baru dari 9.1, yang tidak memiliki slony.
Shadur
@ Safad: Lakukan pencarian untuk "postportsql debian backports". Saya pikir apa yang Anda inginkan postgresql.org/download/linux/debian . Seringkali Anda bisa mendapatkan backport dari backports.debian.org, tetapi tampaknya saat ini mereka tidak tersedia di sana.
Faheem Mitha
@faheemMitha Saya akan menempelkan kesalahan penuh tetapi saya tidak memilikinya lagi, dan saya tidak yakin di mana URL backport yang saya gunakan lagi. Namun, jika Anda tahu jalur kerja yang bisa saya pasang ke sumber saya. Daftar untuk backports, saya ingin mencobanya. PS. Sayangnya, beralih ke platform basis data yang berbeda bukanlah pilihan bagi saya saat ini.
equazcion
@ equazcion Rekomendasi saya adalah solusi DIY. Ambil sumber Debian dari pengujian (atau tidak stabil atau eksperimental), dan buat kembali menjadi paket Debian Anda sendiri. Ini sebenarnya tidak terlalu sulit, dan MySQL tidak mungkin memiliki kesulitan untuk menyelesaikan dependensi. Saya menjelaskan langkah-langkah dasar dalam jawaban yang saya tautkan. Apakah Anda melihatnya?
Faheem Mitha

Jawaban:

4

Membangun kembali eksperimental 5.6 Sumber-sumber MySQL dari eksperimental pada wheezy mudah berbatasan dengan sepele. Namun, Anda akan membutuhkan banyak ruang disk; setelah build selesai, direktori build menggunakan 5,2 GB. Juga, dibutuhkan beberapa saat untuk membangun, dan menjalankan sejumlah tes yang luar biasa. Saya tidak repot-repot mengatur waktu, tetapi memberikan beberapa jam. Dimungkinkan untuk menonaktifkan tes, tetapi saya sarankan membiarkannya berjalan - itu tidak berbahaya selama mereka lulus. Mereka melakukannya di mesin saya. Berita baiknya adalah saya dapat membangun dan menginstalnya tanpa repot. Saya menjalankan tes dasar berikut.

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> 

Jadi, setidaknya saya bisa terhubung ke server. Berikut adalah paket-paket yang terlihat diinstal:

$ 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

Berikut adalah rincian langkah-langkahnya.

  1. Jika Anda memiliki salah satu paket MySQL 5.5 yang diinstal, hapuslah, mereka hanya akan menyebabkan masalah nanti. Jika ada paket yang bergantung pada paket itu, mereka harus pergi juga.
  2. Pertama, dapatkan sumbernya. Anda perlu menambahkan yang berikut (atau yang serupa, sesuaikan untuk server pilihan Anda) ke /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Tambahkan juga yang berikut ke /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Lalu lari

    apt-get update
    
  5. Lalu lari

    apt-get source mysql-5.6
    

    dalam beberapa direktori yang sesuai. Saya biasanya membuat direktori di/usr/local/src ,
    dalam hal ini, katakanlah /usr/local/src/mysql.

  6. Kemudian masuk /usr/local/src/mysql.

  7. Lari

    sudo apt-get build-dep mysql-5.6
    

    Di mesin saya ini menginstal beberapa paket.

  8. Instal beberapa paket dasar untuk bangunan.

    apt-get install build-essential devscripts fakeroot
    

    Kemudian cd ke direktori sumber yang dihasilkan /usr/local/src/mysql/mysql-5.6- 5.6.16dan jalankan

    debuild -uc -us
    

    Ini akan memakan waktu cukup lama untuk dibangun. Dalam beberapa kasus itu adalah ide yang baik untuk ditambahkan
    nomor versi, tetapi tidak benar-benar diperlukan di sini. karena tidak mungkin paket MySQL 5.6 lainnya akan masuk ke wheezy.

    Jika Anda tidak ingin menjalankan tes, Anda dapat menggunakannya

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Sekarang Anda harus menginstal libdbd-mysql-perl, yang merupakan ketergantungan runtime dari paket mysql.

     apt-get install libdbd-mysql-perl
    
  10. Kemudian naik satu tingkat ke atas /usr/local/src/mysql. Seharusnya ada beberapa paket deb di sana. Anda harus menginstal setidaknya

     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
    

    Ini dapat dilakukan misalnya dengan menjalankan:

     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
    
Faheem Mitha
sumber
Pertama-tama, terima kasih untuk ini, dan semua upaya yang Anda lakukan. Namun ini gagal pada langkah 8. Saya sepertinya tidak memiliki ini / debian / paths: 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 Saya melakukan ini di Turnkey Linux yang saya pikir menggunakan LAMP, jika itu membantu.
equazcion
@ equazcion Anda mungkin belum menginstal fakeroot. apt-get install fakeroot.
Faheem Mitha
Memasang fakeroot berhasil. Langkah terakhir yang salah mengatakan akan merusak MySQL 5.5. Saya lalai menghapus 5,5 seperti yang Anda sarankan, karena saya tidak tahu caranya, dan saya tidak yakin bagaimana itu akan mempengaruhi database saya saat ini. Saya siap untuk mencoba ini lagi setelah menghapus 5.5, jika Anda ingin memberi tahu saya bagaimana cara melakukan itu dengan cara yang akan membuat data saya tersedia di versi baru. Saya tahu Anda tidak begitu terbiasa dengan MySQL dan Anda sudah menghabiskan sedikit waktu untuk ini. Ini adalah awal yang baik dan saya mungkin bisa mencari tahu bagaimana melakukan sisanya dengan googling.
equazcion
@ equazcion sesuai dengan dev.mysql.com/doc/refman/5.6/en/… Anda hanya perlu melakukan dump dengan mysqldumpdan kemudian memuat kembali file dump. Kembalikan basis data Anda juga, tentu saja.
Faheem Mitha
Berhasil menyelamatkan ini tanpa mengulangi semua langkah, dan tidak perlu mengimpor kembali database - mereka sudah ada di sana. Bagi siapa pun yang tertarik, saya harus melakukannya apt-get remove mysql-serverdan apt-get remove mysql-client, juga harus melakukannya apt-get install libterm-readkey-perlsebelum langkah terakhir. Juga, mysql-server-coreinstal pada langkah terakhir harus dilakukan sebelumnya mysql-server. Saya sekarang secara resmi menjalankan MySQL 5.6.16 dan telah berhasil menguji indeks pencarian InnoDB teks lengkap (alasan saya membutuhkan ini)! Terima kasih, Faheem Mitha. Anda menyelamatkan kewarasan saya.
equazcion
6

Saat ini pilihan terbaik adalah menggunakan repo MySQL APT resmi yang memungkinkan apt-get upgradeinstalasi.

takeshin
sumber
Ini mungkin solusi terbaik karena tidak memerlukan kompiler untuk diinstal. Lebih bodoh-bukti :)
Christopher Schultz
Solusi ini bekerja untuk saya. Setelah menginstal, pilih versi server mysql dan tingkatkan apt-get upgrade, kemudian saya lakukan apt-get upgrade mysql-server, dan upgrade mudah dari mysql dari 5,5 ke 5,7. Setelah peningkatan, Anda perlu mengkonfigurasi lagi dan menjalankan:mysql_upgrade -u root
fermin
1

Semua Diuji Selamat bersenang-senang.

  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. scripts / mysql_install_db --user = mysql
  11. chown -R root.
  12. chown -R data mysql
  13. file dukungan cp / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. echo $ '! termasuk /etc/mysql/my.cnf?n!includedir /etc/mysql/conf.d/'> my.cnf
  17. layanan mysql mulai
  18. ./bin/mysql_secure_installation
Binatang Keamanan
sumber
Ini tampaknya akan baik sampai di sini (maaf untuk kekacauan, saya tidak tahu bagaimana untuk menyisipkan line break di sini): 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
coba dengan /etc/init.d/mysql mulai atau coba tekan tab-tab di /etc/init.d/mys dan jalankan
Security Beast
@ equazcion Selamat, sekarang Anda telah menemukan mengapa debian kadang membutuhkan waktu untuk membuat paket resmi untuk versi baru.
Shadur