自從甲骨文收購 MySQL 後,由於甲骨文對 MySQL 的開發和維護更多傾向於閉門的立場,很多 MySQL 的開發者和用戶放棄了它。在社區驅動下,促使更多人移到 MySQL 的另一個叫 MariaDB 的分支,在原有 MySQL 開發人員的帶領下,MariaDB 的開發遵循開源的理念,並確保它的二 ...
自從甲骨文收購 MySQL 後,由於甲骨文對 MySQL 的開發和維護更多傾向於閉門的立場,很多 MySQL 的開發者和用戶放棄了它。在社區驅動下,促使更多人移到 MySQL 的另一個叫 MariaDB 的分支,在原有 MySQL 開發人員的帶領下,MariaDB 的開發遵循開源的理念,並確保它的二進位格式與 MySQL 相容。眾多Linux 發行版例如Red Hat等都支持 MariaDB 作為 MySQL 的直接替換品。
如果你想要將 MySQL 中的資料庫遷移到 MariaDB 中,那麼非常幸運,由於他們的二進位相容性,MySQL-to-MariaDB 遷移過程是非常簡單的。如果你按照下麵的步驟,將 MySQL 遷移到 MariaDB 會是無痛的。
準備 MySQL 資料庫和表
出於演示的目的,我們在做遷移之前在資料庫中創建一個測試的 MySQL 資料庫和表。如果你在 MySQL 中已經有了要遷移到 MariaDB 的資料庫,跳過此步驟。否則,按以下步驟操作。
1.在終端輸入 root 密碼登錄到 MySQL 。
$ mysql -u root -p
2.創建一個資料庫和表。
mysql> create database test01; mysql> use test01; mysql> create table pet(name varchar(30), owner varchar(30), species varchar(20), sex char(1));
3.在表中添加一些數據。
mysql> insert into pet values('brandon','Jack','puddle','m'),('dixie','Danny','chihuahua','f');
4.退出 MySQL 資料庫.
備份 MySQL 資料庫
1.備份現有的 MySQL 資料庫,使用下麵的 mysqldump 命令導出現有的資料庫到文件中。運行此命令之前,請確保你的 MySQL 伺服器上啟用了二進位日誌。
$ mysqldump --all-databases --user=root --password --master-data > backupdb.sql
2.現在,在卸載 MySQL 之前先在系統上備份 my.cnf 文件。此步是可選的。
$ sudo cp /etc/mysql/my.cnf /opt/my.cnf.bak
卸載 MySQL
1.首先,停止 MySQL 服務,請從以下三個命令中任選一個執行
$ sudo service mysql stop //RHEL6 $ sudo systemctl stop mysql //RHEL7 $ sudo /etc/init.d/mysql stop //RHEL6
2.使用以下命令移除 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官網提供了一個線上工具幫助你依據你的 Linux 發行版中來添加MariaDB的官方倉庫。此工具為 openSUSE, Arch Linux, Mageia, Fedora, CentOS, RedHat, Mint, Ubuntu, 和 Debian 提供了 MariaDB 的官方倉庫.
1.在下麵例子中,我們使用 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
CentOS7
$ sudo vi /etc/yum.repos.d/MariaDB.repo //創建自定義的yum源 ....................................... //以下為文件內容 [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
2.安裝了所有必要的軟體包後,你可能會被要求為 MariaDB 的 root 用戶創建一個新密碼。設置 root 的密碼後,別忘了恢復備份的 my.cnf 文件。
$ sudo cp /opt/my.cnf /etc/mysql/
3.現在啟動 MariaDB 服務,請從以下三條命令中任選其一你可以運行的。
$ sudo service mariadb start $ sudo systemctl start mariadb $ sudo /etc/init.d/mariadb start
將Mysql遷移至MariaDB
我們將以前導出的Mysql資料庫導入到 MariaDB 伺服器中。
$ mysql -u root -p < backupdb.sql
輸入你 MariaDB 的 root 密碼,資料庫導入過程將開始。導入過程完成後,將返回到命令提示符下。
要檢查導入過程是否完全成功,請登錄到 MariaDB 伺服器,並查看一些樣本來檢查。
$ mysql -u root -p ......................................//以下為sql命令 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官方文檔。
故障排除
在運行 mysqldump 命令備份資料庫時出現以下錯誤。
通過使用 "--master-data",你可以在導出的輸出中包含二進位日誌信息,這對於資料庫的複製和恢復是有用的。但是,二進位日誌未在 MySQL 伺服器啟用。要解決這個錯誤,修改 my.cnf 文件,併在 [mysqld] 部分添加下麵的選項。(LCTT 譯註:事實上,如果你並沒有啟用二進位日誌,那取消"--master-data"即可。)
log-bin=mysql-bin
保存 my.cnf 文件,並重新啟動 MySQL 服務。
本文轉載自:http://www.linuxprobe.com/how-migrate-mysql-to-mariadb/
免費提供最新Linux技術教程書籍,為開源技術愛好者努力做得更多更好:http://www.linuxprobe.com/