Linux中國

在 Linux 中怎樣將 MySQL 遷移到 MariaDB 上

如果你想要將 MySQL 中的資料庫遷移MariaDB 中,這篇文章就是你所期待的。幸運的是,由於他們的二進位兼容性,MySQL-to-MariaDB 遷移過程是非常簡單的。如果你按照下面的步驟,將 MySQL 遷移到 MariaDB 會是無痛的。

準備 MySQL 資料庫和表

出於演示的目的,我們在做遷移之前在資料庫中創建一個測試的 MySQL 資料庫和表。如果你在 MySQL 中已經有了要遷移到 MariaDB 的資料庫,跳過此步驟。否則,按以下步驟操作。

在終端輸入 root 密碼登錄到 MySQL 。

$ mysql -u root -p 

創建一個資料庫和表。

mysql> create database test01;
mysql> use test01;
mysql> create table pet(name varchar(30), owner varchar(30), species varchar(20), sex char(1));

在表中添加一些數據。

mysql> insert into pet values('brandon','Jack','puddle','m'),('dixie','Danny','chihuahua','f'); 

退出 MySQL 資料庫.

備份 MySQL 資料庫

下一步是備份現有的 MySQL 資料庫。使用下面的 mysqldump 命令導出現有的資料庫到文件中。運行此命令之前,請確保你的 MySQL 伺服器上啟用了二進位日誌。如果你不知道如何啟用二進位日誌,請參閱結尾的教程說明。

$ mysqldump --all-databases --user=root --password --master-data > backupdb.sql 

現在,在卸載 MySQL 之前先在系統上備份 my.cnf 文件。此步是可選的。

$ sudo cp /etc/mysql/my.cnf /opt/my.cnf.bak 

卸載 MySQL

首先,停止 MySQL 服務。

$ sudo service mysql stop

或者:

$ sudo systemctl stop mysql

或:

$ sudo /etc/init.d/mysql stop 

然後繼續下一步,使用以下命令移除 MySQL 和配置文件。

在基於 RPM 的系統上 (例如, CentOS, Fedora 或 RHEL):

$ sudo yum remove mysql* mysql-server mysql-devel mysql-libs
$ sudo rm -rf /var/lib/mysql 

在基於 Debian 的系統上(例如, Debian, Ubuntu 或 Mint):

$ sudo apt-get remove mysql-server mysql-client mysql-common
$ sudo apt-get autoremove
$ sudo apt-get autoclean
$ sudo deluser mysql
$ sudo rm -rf /var/lib/mysql 

安裝 MariaDB

在 CentOS/RHEL 7和Ubuntu(14.04或更高版本)上,最新的 MariaDB 已經包含在其官方源。在 Fedora 上,自19 版本後 MariaDB 已經替代了 MySQL。如果你使用的是舊版本或 LTS 類型如 Ubuntu 13.10 或更早的,你仍然可以通過添加其官方倉庫來安裝 MariaDB。

MariaDB 網站 提供了一個在線工具幫助你依據你的 Linux 發行版中來添加 MariaDB 的官方倉庫。此工具為 openSUSE, Arch Linux, Mageia, Fedora, CentOS, RedHat, Mint, Ubuntu, 和 Debian 提供了 MariaDB 的官方倉庫.

下面例子中,我們使用 Ubuntu 14.04 發行版和 CentOS 7 配置 MariaDB 庫。

Ubuntu 14.04

$ 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'
$ sudo apt-get update
$ sudo apt-get install mariadb-server 

CentOS 7

以下為 MariaDB 創建一個自定義的 yum 倉庫文件。

$ sudo vi /etc/yum.repos.d/MariaDB.repo 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-server MariaDB-client 

安裝了所有必要的軟體包後,你可能會被要求為 MariaDB 的 root 用戶創建一個新密碼。設置 root 的密碼後,別忘了恢復備份的 my.cnf 文件。

$ sudo cp /opt/my.cnf /etc/mysql/

現在啟動 MariaDB 服務。

$ sudo service mariadb start

或:

$ sudo systemctl start mariadb

或:

$ sudo /etc/init.d/mariadb start 

導入 MySQL 的資料庫

最後,我們將以前導出的資料庫導入到 MariaDB 伺服器中。

$ mysql -u root -p < backupdb.sql 

輸入你 MariaDB 的 root 密碼,資料庫導入過程將開始。導入過程完成後,將返回到命令提示符下。

要檢查導入過程是否完全成功,請登錄到 MariaDB 伺服器,並查看一些樣本來檢查。

$ mysql -u root -p
MariaDB [(none)]> show databases;
MariaDB [(none)]> use test01;
MariaDB [test01]> select * from pet; 

結論

如你在本教程中看到的,MySQL-to-MariaDB 的遷移並不難。你應該知道,MariaDB 相比 MySQL 有很多新的功能。至於配置方面,在我的測試情況下,我只是將我舊的 MySQL 配置文件(my.cnf)作為 MariaDB 的配置文件,導入過程完全沒有出現任何問題。對於配置文件,我建議你在遷移之前請仔細閱讀 MariaDB 配置選項的文件,特別是如果你正在使用 MySQL 的特定配置。

如果你正在運行有海量的表、包括群集或主從複製的資料庫的複雜配置,看一看 Mozilla IT 和 Operations 團隊的 更詳細的指南 ,或者 官方的 MariaDB 文檔

故障排除

1、 在運行 mysqldump 命令備份資料庫時出現以下錯誤。

$ mysqldump --all-databases --user=root --password --master-data > backupdb.sql 
mysqldump: Error: Binlogging on server not active

通過使用 "--master-data",你可以在導出的輸出中包含二進位日誌信息,這對於資料庫的複製和恢復是有用的。但是,二進位日誌未在 MySQL 伺服器啟用。要解決這個錯誤,修改 my.cnf 文件,並在 [mysqld] 部分添加下面的選項。(LCTT 譯註:事實上,如果你並沒有啟用二進位日誌,那取消"--master-data"即可。)

log-bin=mysql-bin

保存 my.cnf 文件,並重新啟動 MySQL 服務:

$ sudo service mysql restart

或者:

$ sudo systemctl restart mysql

或:

$ sudo /etc/init.d/mysql restart 

via: http://xmodulo.com/migrate-mysql-to-mariadb-linux.html

作者:Kristophorus Hadiono 譯者:strugglingyouth 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...