天天看點

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

大家好!這是一篇介紹如何在伺服器或個人電腦上從mysql遷移到mariadb的教程。也許你會問為什麼我們要将資料庫管理從mysql遷移到mariadb。往下看我們告訴你為什麼這樣做。

<a target="_blank"></a>

mariadb是mysql社群開發的分支,也是一個增強型的替代品。它由mysql前開發者們帶頭組織的基金會開發,使用起來和mysql完全一樣。自從oracle買下了mysql,它就不再自由開源了,但是 mariadb仍然自由開源。一些如谷歌、維基、linkedin、mozilla等的頂級的網站已經遷移到mariadb了。它的優勢在哪裡:

向後相容mysql

永遠開源

由mysql締造者的維護

更尖端的功能

更多的存儲引擎

大型的網站已經轉向mariadb

現在,讓我們遷移到mariadb吧!

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

讓我們建立一個叫linoxidedb的用于測試的示例資料庫。

使用以下指令用root賬戶登陸mysql:

<code>$ mysql -u root -p</code>

輸入mysql 的 root 使用者密碼後,你将進入mysql的指令行

建立測試資料庫:

在mysql指令行輸入以下指令以建立測試資料庫。

<code>mysql&gt; create database linoxidedb;</code>

檢視可用的資料庫,輸入以下指令:

<code>mysql&gt; show databases;</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

creating test databases

如你所見,算上剛剛建立的linoxidedb我們一共有5個資料庫。

<code>mysql&gt; quit</code>

現在,我們就将剛建立的資料庫從mysql遷移到mariadb。

注:使用centos這類基于fedora的linux發行版沒有必要參考這篇教程,因為它們在安裝mariadb時會自動代替mysql,無需備份現有的資料庫,你隻需要更新mysql就可以得到mariadb。

我們第一個重要的步驟就是備份現有的資料庫。我們在終端(不是mysql指令行)裡輸入如下指令來完成備份。

<code>$ mysqldump --all-databases --user=root --password --master-data &gt; backupdatabase.sql</code>

哇哦!我們遇到了點麻煩。别擔心我們可以搞定。

<code>$ mysqldump: error: binlogging on server not active</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

mysqldump error

為了修複這個錯誤,我們需要對my.cnf檔案做一些小改動。

編輯my.cnf檔案:

<code>$ sudo nano /etc/mysql/my.cnf</code>

在[mysqld]部分添加如下參數。

log-bin=mysql-bin

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

configuring my.cnf

好了,在儲存并關閉檔案後,我們需要重新開機一下mysql服務。運作以下指令重新開機:

<code>$ sudo /etc/init.d/mysql restart</code>

現在,重新運作mysqldump指令來備份所有的資料庫。

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

dumping databases

上面的指令将會備份所有的資料庫,把它們存儲在目前目錄下的backupdatabase.sql檔案中。

首先,我們得把my.cnf檔案挪到安全的地方去。

注:在你解除安裝mysql包的時候不會自動删除my.cnf檔案,我們這樣做隻是以防萬一。在mariadb安裝時,它會詢問我們是保持現存的my.cnf檔案,還是使用包中自帶的版本(即新my.cnf檔案)。

在shell或終端中輸入如下指令來備份my.cnf檔案:

<code>$ sudo cp /etc/mysql/my.cnf my.cnf.bak</code>

運作指令來終止mysql服務:

<code>$ sudo /etc/init.d/mysql stop</code>

然後移除mysql包:

<code>$ sudo apt-get remove mysql-server mysql-client</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

uninstalling mysql

這是在ubuntu系統中安裝mariadb的指令:

<code>$ sudo apt-get install software-properties-common</code>

<code>$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db</code>

<code># sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main'</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

adding mariadb repo

鍵值導入并且添加完倉庫後,你就可以用以下指令安裝mariadb了:

<code>$ sudo apt-get update</code>

<code>$ sudo apt-get install mariadb-server</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

installing mariadb

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

my.conf configuration prompt

想要将my.cnf.bak中的内容恢複到my.cnf,在終端中輸入以下指令。由于my.cnf.bak檔案在目前目錄下,是以我們隻要簡單的執行以下指令即可:

<code>$ sudo cp my.cnf.bak /etc/mysql/my.cnf</code>

最後,讓我們把我們之前建立的資料庫導入吧!運作一下指令即可完成導入。

<code>$ mysql -u root -p &lt; backupdatabase.sql</code>

就這樣,我們已成功将之前的資料庫導入了進來。

來,讓我們登入一下mysql指令行,檢查一下資料庫是否真的已經導入了:

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

importing database

為了檢查資料庫是否被遷移到mariadb,請在mariadb指令行中輸入“show databases;”不用輸入(“”),如下:

<code>mariadb&gt; show databases;</code>

Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟Linux 上從 MySQL 遷移到 MariaDB 的簡單步驟

mysql to mariadb database migrated

如你所見,linoxidedb及所有的資料庫都已經成功的被遷移了。

最後,我們已經成功地從mysql遷移到了mariadb資料庫管理系統。mariadb比mysql好,雖然在性能方面mysql還是比它更快,但是mariadb的優點在于它額外的特性與支援的許可證。這能夠確定它自由開源(foss),并永久自由開源,相比之下mysql還有許多額外的插件,有些不能自由使用代碼、有些沒有公開的開發程序、有些在不久的将來會變的不再自由開源。如果你有任何的問題、評論、回報給我們,不要猶豫直接在評論區留下你的看法。謝謝觀看本教程,希望你能喜歡mariadb。

原文釋出時間:2015-04-02

本文來自雲栖合作夥伴“linux中國”