Ubuntu 11.04將MySQL 5.1升級到5.5

來源:互聯網
上載者:User

【本文僅僅記錄升級過程,不討論兩個版本的優劣,而且本網目前的資料庫相對簡單,沒有預存程序什麼的,所以不能保證同樣方法試用於所有情況,總之升級有風險,操作需謹慎!】

因為Ubuntu的apt庫裡MySQL最新版本依然是5.1,所以升級MySQL5.5 只有自行下載,並且由於兩個版本間改動較大,所以務必先閱讀官網的升級事項 upgrading from from MySQL 5.1 to 5.5 ,確保自己的資料庫以及配置適用新版。

本文參考了一篇英文指南 A step by step guide to upgrading to MySQL 5.5 但是做了一些順序和內容上的調整,特別是官網和這篇英文指南都是在升級前mysqldump來備份檔案,升級後再將sql匯入的方式,但是這個過程可能非常耗時(本網的資料庫可能需要花費十幾個小時才能完成重新匯入),我直接在原資料庫檔案目錄上升級,基本是眨眼的功夫,當然要再次強調,這個未必適用於所有人。

具體步驟如下:

1. 停止現版本MySQL,並備份

mkdir mysql_5.1_backup

cd mysql_5.1_backup

sudo /etc/init.d/mysql stop

接下來所有備份操作都在mysql_5.1_backup 執行

1.1 用mysqldump 備份資料庫,可以將mysql內建資料庫和產品資料庫分開備份

mysqldump -u user_name -p –databases mysql > mysql_db.sql
mysqldump -u user_name -p –databases db_name > db_name.sql

1.2 備份MySQL 資料目錄,更多備份,更多安全

sudo cp -R /var/lib/mysql/ mysql-5.1-data

1.3 備份MySQL 設定檔

sudo cp -r /etc/mysql mysql_5.1_conf

2 安裝非同步io庫

sudo apt-get install libaio-dev

3. 從官網上下載最新的MySQL,(我們用的是64位,截至5.5.16,注意要下載 .tar.gz那個版本, tar版本很坑爹,解壓後都是rpm檔案)

wget -c “http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16-linux2.6-x86_64.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/” -O mysql-5.5.16-linux2.6-x86_64.tar.gz

4. 將下載檔案拷貝到/usr/local/並解壓,建立軟連結(方便以後下載新版本後切換)

sudo cp mysql-5.5.16-linux2.6-x86_64.tar.gz /usr/local
sudo tar xzvf mysql-5.5.16-linux2.6-x86_64.tar.gz
sudo ln -s mysql-5.5.16-linux2.6-x86_64 mysql

5. 幹掉舊版本的MySQL

sudo apt-get remove mysql-server
sudo apt-get autoremove
sudo apt-get remove mysql-client
sudo apt-get autoremove

6. 編輯環境檔案/etc/environment,使之內容如下:
PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin”
7. 保證MySQL的socket 檔案所在目錄存在並可讀寫

sudo mkdir /var/run/mysqld/ (如果已經存在就忽略錯誤)
sudo chown -R mysql:mysql /var/run/mysqld/

8. 拷貝新的設定檔

cd /usr/local/mysql/support-files/
sudo cp my-large.cnf /etc/mysql/my.cnf

9. 編輯設定檔/etc/mysql/my.cnf,添加如下內容

[mysqld]

user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr/local/mysql
datadir = /var/lib/mysql #這裡和英文指南不同,指向原MySQL資料庫檔案目錄
tmpdir = /tmp
log_error = /var/log/mysql/error.log

注意,要確保[client]和[mysqld]下socket和port欄位內容一致

10. 拷貝MySQL開機檔案

cd /usr/local/mysql/support-files/
sudo cp mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo update-rc.d mysql defaults

11. 幹掉舊版MySQL 餘虐 (和英文版教程不同,因為保留了原設定檔目錄和原資料庫檔案目錄)

sudo rm -R /usr/lib/mysql

12. 跳過grants table 運行MySQL

sudo su #切換到root,否則下面的命令中無法使用mysql帳號
/usr/local/mysql/bin/mysqld –skip-grant-tables –user=mysql

13. 開一個新的終端

sudo /usr/local/mysql/bin/mysql_upgrade

如果所有的log都ok,那就基本Ok了
14. 終止之前的mysql進程,ctrl-c停不下來的話,就直接kill 進程號
15. 正常啟動MySQL

sudo /etc/init.d/mysql start

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.