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中國