iT邦幫忙

0

MYSQL 更新升級問題

sql
cc442 2012-01-11 12:31:1814849 瀏覽
  • 分享至 

  • xImage

我們有一台WEB SERVER使用PHP+MYSQL架設了幾個網站對外服務
現有MYSQL版本是5.513版,目前出到5.519想要更新
因為MYSQL更新的很頻繁,所以我的問題是
1.同版數新版本有必要跟著一直更新嗎?(5.513->5.519,以前都是大換代才想要更新)
2.如果跟著現行版本更新,在不需要導出資料的狀況下,直接安裝更新有沒有影響?

請更新教教主賜教一直保持MYSQL最新最穩妥的流程與方法,感謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
wiseguy
iT邦超人 1 級 ‧ 2012-01-11 13:40:31
最佳解答

參考它的 ChangeLog。
假如不是修正會影響你用到的功能,或者改善你所遭遇到的瓶頸,或者修補嚴重的安全漏洞,那當然可以不用一直緊跟著升級。

只要版本號前兩碼未改,基本上都可以直接升軟體即可,資料不必匯出再匯入。除非 ChangeLog 有註明。不過這樣的情況幾乎沒見過。就算版本號第二碼更換,只要想更換的新版文件中 (manual),有寫到什麼版本可以 upgrade 到此版本,那就可以照內容所述去升級,一樣不必匯出再匯入。大致步驟是:

  1. 停掉 apache & PHP
  2. 停掉目前 mysql 服務,換軟體,再啟動 mysql 服務
  3. 執行新版軟體中的 mysql_upgrade 這支程式,它會調整資料庫格式
  4. 重啟 mysql (restart)
  5. 啟動 apache & PHP
wiseguy iT邦超人 1 級 ‧ 2012-01-12 00:30:19 檢舉

補充:
樓下 twtw 大師的說法,從系統本身套件維護考量。
小弟使用 mysql 就比較不偏好用系統套件,直接去抓官方 binary 來用。比如要用 5.5.19 的版本 (以 CentOS 為例):

  1. 安裝在 /usr/local
    % wget -nv -q -O - http://ftp.twaren.net/Unix/Database/MySQL/Downloads/MySQL-5.5/mysql-5.5.19-linux2.6-i686.tar.gz | tar zxf - -C /usr/local
    % ln -s /usr/local/mysql-5* /usr/local/mysql
  2. 設定好 /etc/my.cnf,接著建立資料庫 (比如建在 /var/lib/mysql)
    % useradd useradd -d /var/lib/mysql -m -r -s /sbin/nologin mysql
    % /usr/local/mysql/scripts/mysql_install_db --user=mysql
  3. 把 mysql 設為 service
    % cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    % chkconfig mysqld on
    % service mysqld start
    醬子就好了 (記得要去改 root 密碼)。以後要升級,只需要 (假設要升為 5.5.20):
    % wget -nv -q -O - http://ftp.twaren.net/Unix/Database/MySQL/Downloads/MySQL-5.5/mysql-5.5.20-linux2.6-i686.tar.gz | tar zxf - -C /usr/local
    % cd /usr/local; service mysqld stop; /bin/rm mysql; ln -s mysql-5.5.20-linux2.6-i686 mysql; sleep 1; service mysqld start
    就這樣。
cc442 iT邦新手 5 級 ‧ 2012-01-20 18:40:47 檢舉

雖然twtw大大講解非常詳盡,絕對是非常好的答案,但wiseguy大大比較偏向我的問題點,當然兩位的答案都不錯,由於twtw已經大師10級,我想最佳解答給wiseguy大比較有助益!

6
逮丸逮丸
iT邦大師 1 級 ‧ 2012-01-11 22:44:38

OS決定了會不會有這個問題
您在問題中沒有提到是何種OS,
不同OS的環境下,
決定了你這個問題的不同作法,
在此就針對:

cc442提到:
一直保持MYSQL最新最穩妥的流程與方法

來說明可行的做法。
(當然這邊不提是否有必要追求最新版本的這個議題)
1.如果你一定要什麼都靠自己編譯新版本的話,
那任何OS就無所謂,
只要沒有新舊library套件因為相依問題的話,
就要看清楚mysql的各版差別說明來進行。

2.如果你不是一定要自行編譯的話,
選擇什麼OS,可以讓你花不同的心力來升到最新版。

不同Linux版的最新mysql的版本狀況
Fedora
觀察一下 fedora 各版的 mysql 最新版
http://ftp.twaren.net/Linux/Fedora/linux/updates/16/x86_64/
mysql-server-5.1.56-1.fc13.x86_64.rpm
mysql-server-5.1.60-1.fc14.x86_64.rpm
mysql-server-5.5.18-1.fc15.x86_64.rpm
mysql-server-5.5.18-1.fc16.x86_64.rpm
越早裝的OS版本,
愈新的mysql版本就愈不大會有官方出的套件,
若碰到Library新版的相依問題,
東拼西裝相關套件還不見得保證成功。
只有整個OS升版,才能獲整個套件的新版。
但OS的upgrade到下一版的環境,
總是與重裝新版的OS有所不同,
又要顧到原有server上的服務,
這是令人麻煩而鎖碎的考量。

Ubuntu
目前手邊的 Lubuntu 11.10 按現有預設的版本為:
mysql-server-5.1 (5.1.58-1ubuntu1)
mysql-server (5.1.58-1ubuntu1)
想要裝 mysql 5.5.x,
也需要參考一下別人的安裝經驗,
google: ubuntu 11.10 mysql 5.5

我用Ubuntu套件庫,
並沒有太大的好感,
裝個iBus,所需套件版本就不一致,
東缺西缺的還得上網找相合版本的套件才裝起來。
要裝 build-essential,
也是套件庫裡的一堆套件版本不合,
要花心力東找西找相合套件才完成。
想裝dillo,迄今還沒有套件可用。

同事有Ubuntu的整個升版,
總是會有些麻煩的問題產生。
OS版本數字可以一直往上提升,
看起來很爽,
如果Server有跑服務的話,
OS升版就沒那麼能隨心所欲。

archlinux
而自己主要使用的 archlinux
Rolling release 滾動版本的Linux,
沒有什麼新舊版次之分,
任何時期安裝的archlinux,
只要pacman -Syu就都把所有各套件升到最新,

<pre class="c" name="code">$ pacman -Q mysql php linux
mysql 5.5.19-1
php 5.3.8-6
linux 3.1.8-1

以下是mysql的更新記錄,
沒有煩惱過更新要花多少心力,
最多是在 5.1.54-1 -> 5.5.8-9 的時候,
提示要執行 mysql_upgrade 而已。

<pre class="c" name="code">$ grep "upgraded mysql " pacman.log
[2010-09-01 08:44] upgraded mysql (5.1.47-1 -> 5.1.50-1)
[2010-10-09 14:39] upgraded mysql (5.1.50-1 -> 5.1.51-1)
[2011-01-20 19:36] upgraded mysql (5.1.51-1 -> 5.1.54-1)
[2011-02-08 07:41] upgraded mysql (5.1.54-1 -> 5.5.8-9)
[2011-02-14 08:56] upgraded mysql (5.5.8-9 -> 5.5.9-1)
[2011-03-25 18:07] upgraded mysql (5.5.9-1 -> 5.5.10-2)
[2011-04-07 08:51] upgraded mysql (5.5.10-2 -> 5.5.11-1)
[2011-05-11 08:47] upgraded mysql (5.5.11-1 -> 5.5.12-1)
[2011-06-15 16:22] upgraded mysql (5.5.12-1 -> 5.5.13-1)
[2011-07-12 09:15] upgraded mysql (5.5.13-1 -> 5.5.14-1)
[2011-07-23 08:43] upgraded mysql (5.5.14-1 -> 5.5.14-2)
[2011-08-03 13:47] upgraded mysql (5.5.14-2 -> 5.5.15-1)
[2011-09-22 14:59] upgraded mysql (5.5.15-1 -> 5.5.16-1)
[2011-10-24 07:42] upgraded mysql (5.5.16-1 -> 5.5.17-1)
[2011-11-26 07:20] upgraded mysql (5.5.17-1 -> 5.5.18-1)
[2011-12-15 09:57] upgraded mysql (5.5.18-1 -> 5.5.19-1)

結論
如果你mysql沒有非要下什麼特別參數來編譯不可的話,
一般官方發行套件就夠用的話,
archlinux是一勞永逸,
套件版本升級不會有OS新舊版本的限制,
mysql及其他套件的升級也都比其他Linux版本快;
若你希望套件都能盡量是最新版的話,
不妨慢慢把一些服務轉用archlinux吧!
也可參考一下:
個人觀點:Linux版本偏好之形成

cc442 iT邦新手 5 級 ‧ 2012-01-20 18:35:46 檢舉

大大的解答對linux派來說,是非常詳盡的方案,個人覺得很受用

我要發表回答

立即登入回答