從MySQL遷移到MariaDB(CentOS)

來源:互聯網
上載者:User

下面先摘錄一點背景介紹,然後是我在 CentOS 6.4 上從 MySQL 5.5.31 遷移至 MariaDB 5.5.31 的操作記錄。 最後是我後來發現一個較好的遷移方法。

1. 背景介紹

MySQL是世界上最流行的開源關係資料庫。 2008 年,Sun 收購 MySQL。 然後 2010 年,甲骨文又收購了 Sun,於是 MySQL 落入了甲骨文(Oracle)手中。 Oracle 與開源社區關係的一直不太好,甚至 MySQL 也被弄成了社區版和企業版,不能免費商業使用;MySQL 企業版的新功能不公開原始程式碼,這樣讓使用者很不爽。 MariaDB 則沒有這方面的問題。 與 MySQL 相比,MariaDB 的優勢在於:

可免費商業使用(MySQL 則有社區版和企業版之分,拜 Oracle 所賜)

Maria 儲存引擎

PBXT 儲存引擎

XtraDB 儲存引擎

FederatedX 儲存引擎

更快的複製查詢處理

執行緒池

運行速度更快

更多的擴展功能模組

支援 Unicode 排序

於是我決定先在虛擬機器上看看如何由 MySQL 遷移到 MariaDB,雖然難以預料的是,不知道 Michael Widenius 會不會在什麼時候又將 MariaDB 賣給哪家大公司。

原來 MariaDB 的設計初衷之一就是完全相容 MySQL,包括 API 和用戶端協定,使之能輕鬆成為 MySQL 的代替品,所以由 MySQL 遷移到 MariaDB 基本上可以稱之為「升級」,就好像軟體升級版本一樣。 MariaDB 的技術文檔上是這樣寫的:

如果是相同的基礎版本(如 5.5),可以直接卸載 MySQL 然後安裝 MariaDB,這樣就可以用了。 甚至不需要備份然後還原資料庫。 當然,保險起見,升級前將所有的資料庫都備份一下還是非常有必要的,以防萬一。

如果 MariaDB 的主版本高,在經過上面的卸載 MySQL 再安裝 MariaDB 操作之後,需要使用 mysql_upgrade 升級一下。 是的,甚至連命令列都與使用 MySQL 的時候一樣。

所有原先的用戶端和連接器(PHP、Perl、Python、JAVA 等)都不需要做任何改變就能正常工作,因為 MariaDB 與 MySQL 使用的是相同的用戶端協定,並且用戶端庫檔也是二進位相容的。

2. 遷移操作記錄(下面的 3 的方法更好)

這個 VPS 安裝的是 CentOS,目前版本是 6.4,MySQL 版本是 5.5.31(使用了 remi 源),虛擬機器的配置與此極度相似。 剛開始不太瞭解,執行了這個比較傻的操作方式。

A. 先配置 MARIADB 的安裝源。

目前 MariaDB 的主版本是 5.5,我的 CentOS 是 32 位的,將下面的安裝源配置保存為MariaDB.repo,上傳到伺服器的 /etc/yum.repos.d 資料夾:

[mariadb]

name = MariaDB

enable=1

priority=3

baseurl = HTTP://yum.mariadb.org/5.5/centos6-x86

gpgkey=HTTPs://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

其中 priority=3 是針對 YUM 的 PRIORITIES 優先順序外掛程式的。

B. 卸載原來的 MYSQL 及相關包。

# yum remove mysql*

上面用 * 來匹配刪除所有 mysql 資料包(包括因包依賴而刪除的別的包,如 postfix)。 因為直接安裝的時候會出現衝突,例如:

file /usr/share/mysql/ukrainian/errmsg.sys from install of MariaDB-server-5.5.31-1.i686 conflicts with file from package mysql-libs-5.5.32-1.el6.remi.i686

嗯,好像因為將 php-mysql 也給刪除了(實際上這個不該刪除的),所以 phpMyAdmin 也因為依賴關係而被刪除了,我沒仔細看。

所以最好不要用萬用字元 *,而是選擇性刪除幾個主要的,

# yum remove mysql mysql-server mysql-libs

但是這個我沒有再測試,因為後面有更好的方法。

C. 然後安裝 MARIADB 及相應 PHP 擴展。

也是指定幾個主要的安裝包,剩下的讓 yum 自己進行依賴關係檢查。

# yum install MariaDB-server  MariaDB-client php-mysql

或者不安裝 MariaDB-server 而改為具有同步多主群集特性(synchronous multi-master cluster)的 MariaDB Galera Cluster:

# yum install MariaDB-Galera-server MariaDB-client galera

這裡比較搞笑的是,沒注意前面把 php-mysql 給卸載了,結果運行資料庫之後訪問 WordPress,結果遭遇下面的錯誤:

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

D. 完成,修補

不管版本是否升級了,執行一下資料庫升級指令總沒有壞處:

# mysql_upgrade -p

看看資料庫版本是不是升級了:

# mysql -u root -p -e 'show global variables like "version";'

Enter password:

+---------------+----------------+

| Variable_name | Value |

+---------------+----------------+

| version | 5.5.31-MariaDB |

+---------------+----------------+

將 MariaDB 加入隨系統自啟動清單,

# chkconfig --levels 345 mysql on

嗯,以前 MySQL 的時候是 mysqld,現在是 mysql,就差了一個字母 d。

啟動它,

# service mysql start

這個時候伺服器上的網站應該已經可以正常工作了,訪問資料庫沒有問題。

如果有必要,安裝完 MariaDB 之後可以重新安裝 postfix。 如果發現 phpMyAdmin 提示無存取權限了,那就是被卸載了,需要重新安裝和配置 phpMyAdmin。

另外,因為之前進行了卸載操作,所以原來的 MySQL 和 phpMyAdmin 的設定檔都被清除了,也需要重新配置。 特別是 MySQL 的設定檔 /etc/my.cnf,因為 MariaDB 雖然創建了一個my.cnf.d 資料夾來存儲自己的設定檔,但是它會首先載入 my.cnf,且原來 MySQL 的配置的 [mysqld] 那一節的內容還是有效的。

3. 較好的升級方法

還是在上面介紹的系統組態下,先添加 MariaDB 安裝源,然後直接執行系統升級,

# yum update --skip-broken

MariaDB 相關安裝包會被安裝,不需要的 MySQL 包將被卸載,並且升級之後不需要對系統進行修補了。 看看輸出的前面一部分:

==============================================================================================================

Package Arch Version Repository Size

==============================================================================================================

Installing:

MariaDB-Galera-server i686 5.5.29-1 mariadb 19 M

replacing mysql.i686 5.5.21-1.el6.remi

replacing mysql-server.i686 5.5.21-1.el6.remi

MariaDB-server i686 5.5.31-1 mariadb 32 M

replacing mysql-server.i686 5.5.21-1.el6.remi

MariaDB-shared i686 5.5.31-1 mariadb 1.0 M

replacing mysql-libs.i686 5.5.21-1.el6.remi

kernel i686 2.6.32-358.11.1.el6 updates 24 M

libjpeg-turbo i686 1.2.1-1.el6 base 176 k

replacing libjpeg.i686 6b-46.el6

Updating:

.........

到這裡才感覺到 MariaDB 的設計思想那個無縫替代 MySQL 不是噱頭,而是實實在在的技術。 於是我也就不急著給 VPS 升級到 MariaDB 了,反正過不了多久 CentOS 就會採用  MariaDB,到時候再自然而然地遷移吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.