新 LAMP ,如何將正在運行的 MySQL Server 換成 MariaDB

其實我個人家中伺服器早就把 MySQL Server 換成 MariaDB 運作很久了,不過最近看到一張挺有趣的新架構新圖示如下

lamp-new

挺有趣的,我覺得還是得多多推廣 MariaDB ,畢竟人家 Google 討厭 Oracle MySQL 很久了也自己改用 MariaDB Server ,所以我也幫推了。而要將 MySQL Server 升級(替換)為 MariaDB 其實不困難而且很安全的,因為 MariaDB 已經盡量去相容 MySQL 了,如果我們沒有特別去幫自己的 MySQL 做些特別修改,通常只要把握一個原則,就是資料一定要完整的備份好再來搞升級就行啦。

而本篇主要是針對 CentOS 下既有的舊 LAMP 架構(Linux Apahe MySQL PHP) 升級到新 LAMP 架構,原本的舊架構環境如下

  • CentOS 6.5 64bit
  • MySQL Server 5.5 remi 版本 ()
  • PHP 5.4 remi 版本 ()
  • Apache 2.2

MySQL Server 的部分將會替換為 MariaDB 5.5.X,接下來就開幹吧

1. 設定 mariadb yum

MariaDB 下載頁面中有 LINK 列出了各種 Linux 套件的安裝法,下圖紅框那

mariadb-ownload

點了 Repository configuration tool 後,會看到下面這張圖

mariadb-repo-centos64bit

我們就依照自己的環境來選擇,我們的例子依照順序來選擇就是 CentOS > CentOS 64bit > 5.5,其實上面還有 10.0 ,因為本篇撰文時,版本 10.0 尚在 beta,所以就不拿各位還有我自己的生命開玩笑了,就先玩玩 v5.5 就行了。

當我們選完環境之後,圖中下方灰色方框列出了 MariaDB 的 yum repository 的資料,整段都複製起來吧。

然後在 /etc/yum.repos.d 這個文件夾下建立一個 mariadb.repo,然後把剛剛複製下來整段內容,通通寫到 mariadb.repo 這個文件並存檔就行了,這樣以後我們就可以用 yum 取得官方的 MariaDB 相關套件了。

2. 備份 mysql data

不論如何,一定要把 mysql server 先停掉的,保險點可以先用 mysqldump 備份完整資料先。

我比較懶,我是直接下命令如下,心臟不夠大的記得最好要 mysqldump 做一次備份

/etc/rc.d/init.d/mysqld stop
mv /var/lib/mysql /var/lib/mysql.bak

這兩道指令除了將 MySQL Server 停掉,另外也將原本儲存 mysql 資料的路徑修改為 mysql.bak 了

3. 移除舊的 MySQL 套件

直接下指令

yum remove mysql-server mysql-libs

這指令主要移除 MySQL 的 server 和動態連結套件,所以可能會列出一些相關套件會一併被移除,我自己的截圖畫面如下,不一定人人都像我一樣,自己要記得甚麼東西被移除就是了

remove-mysql-libs

我的環境中,就是把 php-mysql 這個 extension 還有 phpMyAdmin 這兩個會一併移掉,到時候我升級為 MariaDB 的時候也還要再安裝一次,所以還好,就按 y 給它去了。

4. 安裝 MariaDB Server

直接下指令

yum install MariaDB-server MairaDB-client

這道指令安裝了 MariaDB Server 和 MariaDB Client (Console 工具,沒這個可不行啊)

做這個步驟的時候我倒是沒有發生甚麼意外,不過未必每個人都如我相同結果,若有相依性問題,就試試看自己移除衝突套件吧

安裝完成後還不要啟動 MariaDB Server

5. 還原舊資料

在步驟 2 的地方,原本舊的 MySQL Server 資料被我改路徑了,所以現在舊資料是在 /var/lib/mysql.bak,這時候會發現到 MariaDB Server 安裝完畢後,/var/lib/mysql 也被建立了,所以 /var/lib/mysql 這個可以不要了,看要刪掉還是改名字,我是直接刪了,所以我的步驟是

rm -Rf /var/lib/mysql
mv /var/lib/mysql.bak /var/lib/mysql

現在路徑 mysql.bak 又變回 mysql 了

6. 升級資料表

由於 MySQL Server 內各表格的內容多少會和 MariaDB 不同,所以還是得升級一下,剛剛也還沒有啟動 MariaDB Server,所以現在就啟動並且升級資料庫,命令如下

/etc/rc.d/ini.d/mysql start
mysql_upgrade -p

上面的命令是假設以 root 身分且原本舊 mysql 已經有設定密碼,所以我下了 -p 的參數(password)

如果無意外,現在 MariaDB Server 已經正式運作了。

7. 把被移除的相關套件還原

我的環境被移除的有 php-mysql 和 phpMyAdmin ,剛好都是 remi repos 所提供的,所以不難還原,直接下命令安裝

yum --enablerepo=remi install php-mysql phpMyAdmin

然後重啟我們的 httpd,如果是使用 php-fpm 來運行 php 的也要重啟 php-fpm。

最後進入 phpMyAdmin 看看,正常就如下圖所示

phpmyadmin-info

伺服器版本確定是 MariaDB 了,資料庫用戶端版本也確定是 MariaDB 所提供的,這樣就沒問題了,大功告成。

附註

REMI 主要提供 Fedora/RHEL/CentOS 不足的套件,挺多人直接將舊的 php 及 mysql 換成 remi 所提供的版本會比官方包的還要新

網址 : http://blog.famillecollet.com/pages/Config-en

發佈留言