Linux中國

教你在 Debian 和 Ubuntu 上升級 MySQL

步驟1:備份 MySQL 配置文件。

$ sudo mkdir /backup
$ sudo tar cvfvz /backup/mysql_conf.tgz /etc/mysql

步驟2:把資料庫導出到一個 .sql 文件,並且把數據存放路徑下面的數據也備份起來。

$ sudo sh -c 'mysqldump -u root -p -A --events > /backup/backup_db.sql
$ sudo tar cvfvz /backup/mysql_data.tgz /var/lib/mysql

注意:如果你為你的在線 MySQL 系統提供了持續備份,強烈建議你在執行上面步驟時使用單事務選項,或顯式使用鎖(以保證數據一致性 —— 譯註),詳見這個教程

步驟3:停止 MySQL 服務

$ sudo service mysql stop

步驟4:卸載 MySQL 軟體包

$ sudo apt-get remove mysql-server mysql-client mysql-common
$ sudo apt-get autoremove
$ sudo apt-get autoclean

使用 apt-get 卸載時不要用 purge 選項,這會刪除 MySQL 配置文件和其它一些以後要用到的數據。

步驟5: 安裝 MySQL 依賴包(內核非同步 IO 訪問庫),MySQL 5.5以及之後的版本都依賴它。

$ sudo apt-get install libaio1

步驟6:從官網下載 Debian 版的 MySQL 軟體包

32位系統:

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-i686.deb

64位系統:

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-x86_64.deb

步驟7:安裝 MySQL 軟體包

$ sudo dpkg -i mysql-5.6.15-debian6.0-*.deb

這個軟體包會被安裝在 /opt/mysql 目錄下面。

步驟8:將 MySQL 命令所在的路徑添加到系統環境變數 PATH 內。

Debian 上:

$ sudo sh -c 'echo "PATH=$PATH:/opt/mysql/server-5.6/bin" >> /etc/profile'
$ source /etc/profile

UbuntuLinux Mint 上:

$ sudo sh -c 'echo "PATH=${PATH}:/opt/mysql/server-5.6/bin" >> /etc/environment'
$ source /etc/environment

步驟9:進入 MySQL 配置文件,修改下面兩行配置。

$ sudo vi /etc/mysql/my.cnf

-

basedir = /opt/mysql/server-5.6

lc-messages-dir = /opt/mysql/server-5.6/share

步驟10:設置啟動腳本

複製 MySQL 啟動腳本到 /etc/init.d 目錄下,並且將腳本設置為開機啟動,這樣一來 MySQL 就能在系統啟動的時候自動啟動了。

$ sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql
$ sudo update-rc.d mysql defaults

步驟11:(僅限 Ubuntu) 編輯AppArmor配置

MySQL 的上個版本安裝時會為 AppArmor 服務創建一個配置文件,這個文件在 MySQL 卸載後會保留在系統中,但是它與現在安裝好的 MySQL 版本不兼容。你需要重新編輯下這個配置文件,然後 MySQL 服務才能正常啟動。

首先,建一個軟鏈接。

$ sudo ln -s /opt/mysql/server-5.6/bin/mysqld /usr/sbin/mysqld

然後編輯 MySQL AppArmor 配置文件。

$ sudo vi /etc/apparmor.d/usr.sbin.mysqld

/opt/mysql/server-5.6/lib/plugin/ r,

/opt/mysql/server-5.6/lib/plugin/.so mr,

/opt/mysql/server-5.6/share/** r,

最後重啟 AppArmor 服務。

$ sudo service apparmor restart

步驟12:(還是僅限 Ubuntu)刪除上個 MySQL 版本留下的自啟動配置文件。

這個版本的 MySQL 使用 SysVinit (就是 /etc/init.d/mysql)來代替。

$ sudo rm /etc/init/mysql.conf

步驟13:啟動 MySQL 服務。

$ sudo service mysql start

步驟14:恢復 MySQL 資料庫。

$ sudo mysql -u root -p < /backup/backup_db.sql

步驟15:最後,升級 MySQL 系統表。

$ sudo /opt/mysql/server-5.6/bin/mysql_upgrade -v -u root -p

解決 MySQL 升級過程中產生的問題

如果 Ubuntu 下的 MySQL 服務啟動時出現如下錯誤,就是由於舊版 MySQL AppArmor 配置文件禁止其運行而引起。你需要參考步驟11來更新 AppArmor 的配置文件。

Dec 20 19:57:48 ubuntu kernel: [ 5856.960592] type=1400 audit(1387598268.807:39): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=25216 comm="apparmor_parser"

via: http://xmodulo.com/2013/12/upgrade-mysql-server-debian-ubuntu.html

譯者:bazz2 校對:Caroline

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。