RHEL 及 CentOS 7 開始的預設資料庫系統由 MySQL 轉為 MariaDB, 而且由於 Oracle 較封閉的政策, 很多 MySQL 開發者都將應用程式轉移到 MariaDB。MariaDB 是原來 MySQL 的創辦人開發的開源資料庫系統, 可以取代現有的 MySQL。以下會以 CentOS 6 為例子介紹如何從原有 MySQL Server 連同資料一拼轉移到 MariaDB 的做法。
MySQL 資料及設定檔備份
以下轉移不會用 mysqldump 備份資料, 而且將原來的資料目錄直接給 MariaDB 使用。為安全起見, 先停止 MySQL 及將資料目錄備份。
停用 MySQL:
如果是 CentOS 7, 用 systemctl 停止 MySQL:
執行以下指令將 MySQL 的資料目錄備份, CentOS 的 MySQL 資料目錄預設在 /var/lib/mysql:
接著備份 my.cnf:
移除 MySQL 套件
在安裝 MariaDB 前, 先將現有的 MySQL 移除:
接著用 yum 移除 MySQL 套件:
安裝 MariaDB
然後加入 MariaDB 的 YUM Repository, 那便可以用 YUM 安裝 MariaDB。(CentOS 7 可以略過此步驟)
建立檔案 /etc/yum.repos.d/MariaDB.repo
加入以下內容:
|
1 2 3 4 5 |
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 |
之後可以用 YUM 安裝 MariaDB 及其相關套件:
然後之前備份的 my.cnf 檔案還原到 /etc/my.cnf:
如果 MySQL 及 MariaDB 的版本相同, 例如 MySQL 5.5 轉移到 MariaDB 5.5, 可以直接啟動 MariaDB; 但如果 MariaDB 的版本較新, 需要執行 mysql_upgrade 將兩個版本不相容的地方轉換。
之後可以啟動 MariaDB:
或者
啟動 MariaDB 後, 可以連連到 MariaDB 檢查是否正常, 例如檢查資料庫 test_db 裡面的 test_table:
|
1 2 3 |
# mysql -u root -p MariaDB [(none)]> use test_db; MariaDB [test01]> select * from test_table; |
如果可以顯示原來的資料, 轉移過程便完成了。