Làm cách nào để nâng cấp MySQL trong Debian bằng apt-get?


13

Tôi đang sử dụng máy ảo Turnkey Linux. Phiên bản Debian trong đó rõ ràng là trên đường dẫn nâng cấp "Wheezy" (nếu đó là những gì bạn gọi nó). Tôi không hoàn toàn thoải mái với Linux, như bạn có thể thấy.

Tôi cần một số tính năng mới mà MySQL 5.6 cung cấp, trong khi cài đặt hiện tại của tôi là MySQL 5.5.35. Tôi muốn nhận phiên bản mới nhất (5.6.17 kể từ bài đăng này) hoặc ít nhất là bất kỳ 5.6.x.

Tôi đã thử apt-get update, apt-get upgrade, apt-get dist-upgrade. Chúng đã cập nhật rất nhiều thứ thành công, nhưng không có gì là MySQL. Tôi đã thử apt-get upgrade mysql-server, trong đó nói rằng tôi đã có phiên bản mới nhất.

Danh sách kho lưu trữ gói Debian Wheezy trên web hiển thị MySQL 5.5 và không có gì khác, khi tôi cần 5.6. Sau đó tôi đã đọc một cái gì đó về "backport", nghe có vẻ như nó có thể mang lại cho tôi những thứ mà Debian đặc biệt của tôi chưa có - nhưng dường như tôi không thể làm cho nó hoạt động được. Nó yêu cầu thêm dòng vào /etc/apt/sources.list.d/sources.list. Khi tôi thử làm điều đó, sau đó chạy apt-get update, tôi gặp lỗi 404.

Tôi cũng đã thử một vài tuyến đường khác, một trong số đó đang biên dịch tải xuống vanilla MySQL, tôi đã thất bại thảm hại và không muốn thử lại.

Tôi tích cực bối rối về cách thức này được thực hiện. Hầu hết các URL được liệt kê trên các diễn đàn / blog apt-getvà thậm chí là wgetdường như sẽ chết ngay sau khi chúng được đăng, vì vậy tôi không thể hiểu bất cứ ai thậm chí đi tìm thông tin chính xác. Tôi đã cố gắng làm điều này trong hai ngày liền và không thể đi đến đâu.

Vì vậy, giả sử bạn đã đọc đến nay, tôi rất muốn biết liệu có ai có cách nâng cấp MySQL trong Debian theo cách tự động tương đối không đau không (một cách mà tôi sẽ không phải sử dụng makehoặc xuất / nhập cơ sở dữ liệu hiện tại và cấu hình thủ công ).


Làm một backport từ thử nghiệm / không ổn định / thử nghiệm. Xem Làm cách nào tôi có thể cài đặt nhiều phiên bản phần mềm gần đây hơn những gì Debian cung cấp? . Tốt hơn, hãy sử dụng PostgreSQL, vốn đã có backport. Bạn viết "Nó yêu cầu thêm các dòng vào /etc/apt/source.list.d/source.list. Khi tôi thử làm điều đó, sau đó chạy apt-get update, tôi gặp lỗi 404." Bạn cần thêm chi tiết về điều này nếu bạn muốn giúp đỡ.
Faheem Mitha

@faheemMitha Vì tò mò, bạn sẽ tìm thấy những backport postgresql ở đâu? Tôi cần phiên bản mới và các slonykhả năng và tôi không thể tìm thấy phiên bản mới hơn 9.1, thiếu slony.
Shadur

@Shadur: Chỉ cần thực hiện tìm kiếm cho "backgresql debian backport". Tôi nghĩ những gì bạn muốn là postgresql.org/doad/linux/debian . Thường thì bạn có thể lấy backport từ backports.debian.org, nhưng có vẻ như hiện tại chúng không có sẵn từ đó.
Faheem Mitha

@faheemMitha Tôi sẽ dán đầy đủ lỗi nhưng tôi không mắc phải nữa và tôi không chắc chắn các URL backport mà tôi đã sử dụng ở đâu nữa. Tuy nhiên, nếu bạn biết về một dòng hoạt động tôi có thể cắm vào nguồn của mình. Danh sách cho các backport, tôi rất muốn thử nó. Tái bút Thật không may, việc chuyển sang một nền tảng cơ sở dữ liệu khác không thực sự là một lựa chọn đối với tôi.
Equazcion

@equazcion Đề xuất của tôi là một giải pháp DIY. Lấy các nguồn Debian từ kiểm tra (hoặc không ổn định hoặc thử nghiệm) và xây dựng lại chúng vào các gói Debian của riêng bạn. Điều này thực sự không khó lắm và MySQL khó có thể giải quyết được sự phụ thuộc. Tôi giải thích các bước cơ bản trong câu trả lời mà tôi liên kết đến. Bạn đã nhìn vào nó?
Faheem Mitha

Câu trả lời:


4

Xây dựng lại các nguồn MySQL thử nghiệm 5.6 từ thử nghiệm trên wheezy dễ dàng giáp với tầm thường. Tuy nhiên, bạn sẽ cần rất nhiều dung lượng đĩa; Sau khi quá trình xây dựng hoàn tất, thư mục bản dựng đã sử dụng 5,2 GB. Ngoài ra, phải mất một thời gian để xây dựng và chạy một số lượng thử nghiệm đáng kinh ngạc. Tôi không bận tâm đến thời gian, nhưng cho phép một vài giờ. Có thể vô hiệu hóa các bài kiểm tra, nhưng tôi khuyên bạn nên để chúng chạy - nó vô hại miễn là chúng vượt qua. Họ đã làm trên máy của tôi. Tin tốt là tôi đã có thể xây dựng và cài đặt nó mà không phiền phức. Tôi đã chạy thử nghiệm cơ bản sau đây.

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> 

Vì vậy, tôi có thể kết nối với máy chủ ít nhất. Đây là những gì các gói trông giống như được cài đặt:

$ 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

Đây là một sự cố của các bước.

  1. Nếu bạn có bất kỳ gói MySQL 5.5 nào được cài đặt, hãy xóa chúng, chúng sẽ chỉ gây rắc rối về sau. Nếu có bất kỳ gói nào phụ thuộc vào chúng, chúng cũng sẽ phải đi.
  2. Đầu tiên, có được các nguồn. Bạn cần thêm các mục sau (hoặc tương tự, điều chỉnh cho máy chủ ưa thích của bạn) vào /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Ngoài ra, thêm vào sau đây /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Sau đó chạy

    apt-get update
    
  5. Sau đó chạy

    apt-get source mysql-5.6
    

    trong một số thư mục phù hợp. Tôi thường tạo một thư mục trong /usr/local/src,
    trong trường hợp này, nói /usr/local/src/mysql.

  6. Sau đó cd vào /usr/local/src/mysql.

  7. Chạy

    sudo apt-get build-dep mysql-5.6
    

    Trên máy của tôi, cài đặt một vài gói.

  8. Cài đặt một số gói cơ bản để xây dựng.

    apt-get install build-essential devscripts fakeroot
    

    Sau đó cd vào thư mục nguồn kết quả /usr/local/src/mysql/mysql-5.6- 5.6.16và chạy

    debuild -uc -us
    

    Điều này sẽ mất một thời gian để xây dựng. Trong một số trường hợp, nên tăng
    số phiên bản, nhưng thực sự không cần thiết ở đây. vì không chắc là bất kỳ gói MySQL 5.6 nào khác sẽ đi vào trạng thái khò khè.

    Nếu bạn không muốn chạy thử nghiệm, thay vào đó bạn có thể sử dụng

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Bây giờ bạn nên cài đặt libdbd-mysql-perl, đây là phần phụ thuộc thời gian chạy của các gói mysql.

     apt-get install libdbd-mysql-perl
    
  10. Sau đó cd lên một cấp để /usr/local/src/mysql. Cần có một số gói deb ở đó. Bạn sẽ muốn cài đặt ít nhất

     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
    

    Điều này có thể được thực hiện ví dụ bằng cách chạy:

     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
    

Trước hết, cảm ơn vì điều này và tất cả những nỗ lực bạn đang bỏ ra. Tuy nhiên, điều này đã thất bại ở bước 8. Tôi dường như không có những / debian / path này: 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 Tôi đang làm điều này trong Turnkey Linux mà tôi nghĩ sử dụng LAMP, nếu điều đó có ích.
Equazcion

@equazcion bạn có thể chưa cài đặt fakeroot. apt-get install fakeroot.
Faheem Mitha

Cài đặt fakeroot làm việc. Bước cuối cùng bị lỗi nói rằng nó sẽ phá vỡ MySQL 5.5. Tôi đã bỏ qua việc loại bỏ 5.5 như bạn đề xuất, vì tôi không biết làm thế nào và tôi không chắc nó sẽ ảnh hưởng đến cơ sở dữ liệu hiện tại của tôi như thế nào. Tôi đã sẵn sàng để thử lại điều này sau khi xóa 5.5, nếu bạn muốn cho tôi biết cách thực hiện điều đó theo cách sẽ giữ dữ liệu của tôi có sẵn trong phiên bản mới. Tôi biết rằng bạn không quen thuộc với MySQL và bạn đã dành khá nhiều thời gian cho việc này rồi. Đây là một khởi đầu tuyệt vời và tôi có thể tìm ra cách làm phần còn lại bằng cách đi vòng quanh.
Equazcion

@equazcion theo dev.mysql.com/doc/refman/5.6/en/ nam bạn chỉ cần kết xuất với mysqldumpvà sau đó tải lại tệp kết xuất. Trở lại cơ sở dữ liệu của bạn là tốt, tất nhiên.
Faheem Mitha

Được quản lý để cứu vãn điều này mà không cần làm lại tất cả các bước và không cần nhập lại cơ sở dữ liệu - chúng đã ở đó. Đối với bất cứ ai quan tâm, tôi phải làm apt-get remove mysql-serverapt-get remove mysql-client, cũng phải làm apt-get install libterm-readkey-perltrước bước cuối cùng. Ngoài ra, mysql-server-corecài đặt ở bước cuối cùng phải được thực hiện trước đó mysql-server. Bây giờ tôi chính thức chạy MySQL 5.6.16 và đã thử nghiệm các chỉ mục tìm kiếm InnoDB toàn văn thành công (lý do tôi cần điều này)! Cảm ơn bạn, Faheem Mitha. Bạn đã cứu sự tỉnh táo của tôi.
Equazcion

6

Hiện tại tùy chọn tốt nhất là sử dụng repo MySQL APT chính thức cho phép apt-get upgradecài đặt.


Đây có lẽ là giải pháp tốt nhất vì nó không yêu cầu trình biên dịch được cài đặt. Thêm bằng chứng ngu ngốc :)
Christopher Schultz

Giải pháp này làm việc cho tôi. Sau khi cài đặt, chọn phiên bản máy chủ mysql và nâng cấp apt-get upgrade, sau đó tôi sẽ làm apt-get upgrade mysql-servervà dễ dàng nâng cấp mysql từ 5.5 lên 5.7. Sau khi nâng cấp, bạn cần định cấu hình lại và thực thi:mysql_upgrade -u root
fermin

1

Tất cả đã thử nghiệm Hãy vui vẻ.

  1. .apt-get cài đặt libaio1
  2. mysadd nhóm
  3. useradd -r -g mysql
  4. wget -O mysql-5.6.16-debian6.0-x86_64.deb
  5. http://doads.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 / địa phương
  8. ln -s /opt/mysql/server-5.6 mysql
  9. cd mys
  10. tập lệnh / mysql_install_db --user = mysql
  11. chown -R gốc.
  12. chown -R dữ liệu mysql
  13. cp hỗ trợ tập tin / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. echo $ '! bao gồm /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/'> my.cnf
  17. dịch vụ mysql bắt đầu
  18. ./bin/mysql_secure_installation

Điều này dường như được tiến triển tốt cho đến khi ở đây (xin lỗi vì sự lộn xộn, tôi không biết làm thế nào để chèn ngắt dòng ở đây): 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

thử với /etc/init.d/mysql bắt đầu hoặc thử nhấn tab tab tại /etc/init.d/mys và khởi động nó
Security Beast

@equazcion Xin chúc mừng, bây giờ bạn đã phát hiện ra lý do tại sao debian đôi khi phải mất một thời gian để đưa ra gói chính thức cho phiên bản mới.
Shadur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.