MariaDB來代替MySQL的原因
MariaDB使用起來和MySQL完全一樣。自從Oracle買下了MySQL,它就不再自由開源了,但是 MariaDB仍然自由開源。一些如谷歌、維基、LinkedIn、Mozilla等的頂級的網站已經遷移到MariaDB了。它的優勢在哪裡:
向後兼容MySQL
永遠開源
由MySQL締造者的維護
更尖端的功能
更多的存儲引擎
大型的網站已經轉向MariaDB
現在,讓我們遷移到MariaDB吧!
讓我們創建一個叫linoxidedb的用於測試的示例數據庫。
使用以下命令用root賬戶登陸MySQL:
$ mysql -u root -p
輸入mysql 的 root 用戶密碼後,你將進入mysql的命令行
創建測試數據庫:
在mysql命令行輸入以下命令以創建測試數據庫。
mysql> create database linoxidedb;
查看可用的數據庫,輸入以下命令:
mysql> show databases;
如你所見,算上剛剛新建的linoxidedb我們一共有5個數據庫。
mysql> quit
現在,我們就將剛創建的數據庫從MySQL遷移到MariaDB。
注:使用CentOS這類基於fedora的linux發行版沒有必要參考這篇教程,因為它們在安裝MariaDB時會自動代替MySQL,無需備份現有的數據庫,你只需要更新mysql就可以得到mariadb。
1. 備份現有的數據庫
我們第一個重要的步驟就是備份現有的數據庫。我們在終端(不是MySQL命令行)裡輸入如下命令來完成備份。
$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql
哇哦!我們遇到了點麻煩。別擔心我們可以搞定。
$ mysqldump: Error: Binlogging on server not active
mysqldump error
為了修復這個錯誤,我們需要對my.cnf文件做一些小改動。
編輯my.cnf文件:
$ sudo nano /etc/mysql/my.cnf
在[mysqld]部分添加如下參數。
log-bin=mysql-bin
好了,在保存並關閉文件後,我們需要重啟一下mysql服務。運行以下命令重啟:
$ sudo /etc/init.d/mysql restart
現在,重新運行mysqldump命令來備份所有的數據庫。
$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql
dumping databases
上面的命令將會備份所有的數據庫,把它們存儲在當前目錄下的backupdatabase.sql文件中。
2. 卸載MySQL
首先,我們得把my.cnf文件挪到安全的地方去。
注:在你卸載MySQL包的時候不會自動刪除my.cnf文件,我們這樣做只是以防萬一。在MariaDB安裝時,它會詢問我們是保持現存的my.cnf文件,還是使用包中自帶的版本(即新my.cnf文件)。
在shell或終端中輸入如下命令來備份my.cnf文件:
$ sudo cp /etc/mysql/my.cnf my.cnf.bak
運行命令來終止mysql服務:
$ sudo /etc/init.d/mysql stop
然後移除mysql包:
$ sudo apt-get remove mysql-server mysql-client
3. 安裝MariaDB
這是在Ubuntu系統中安裝MariaDB的命令:
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main'
鍵值導入並且添加完倉庫後,你就可以用以下命令安裝MariaDB了:
$ sudo apt-get update
$ sudo apt-get install mariadb-server
我們應該還沒忘記在MariaDB安裝時,它會問你是使用現有的my.cnf文件,還是包中自帶的版本。你可以使用以前的my.cnf也可以用包中 自帶的。即使你想直接使用新的my.cnf文件,你依然可以晚點時候將以前的備份內容還原進去(別忘了我們已經將它復制到安全的地方了)。所以,我們直接 選擇了默認的選項“N”。如果需要安裝其他版本,請參考MariaDB官方倉庫。
4. 恢復配置文件
想要將my.cnf.bak中的內容恢復到my.cnf,在終端中輸入以下命令。由於my.cnf.bak文件在當前目錄下,所以我們只要簡單的執行以下命令即可:
$ sudo cp my.cnf.bak /etc/mysql/my.cnf
5. 導入數據庫
最後,讓我們把我們之前創建的數據庫導入吧!運行一下命令即可完成導入。
$ mysql -u root -p < backupdatabase.sql
就這樣,我們已成功將之前的數據庫導入了進來。
來,讓我們登錄一下mysql命令行,檢查一下數據庫是否真的已經導入了:
$ mysql -u root -p
為了檢查數據庫是否被遷移到MariaDB,請在MariaDB命令行中輸入“show databases;”不用輸入(“”),如下:
mariaDB> show databases;
如你所見,linoxidedb及所有的數據庫都已經成功的被遷移了。
總結
我們已經成功地從MySQL遷移到了MariaDB數據庫管理系統。MariaDB比MySQL好,雖然在性能方面MySQL還是比它更快, 但是MariaDB的優點在於它額外的特性與支持的許可證。這能夠確保它自由開源(FOSS),並永久自由開源,相比之下MySQL還有許多額外的插件, 有些不能自由使用代碼、有些沒有公開的開發進程、有些在不久的將來會變的不再自由開源。