怎樣將 MySQL 遷移到 MariaDB 上

来源:http://www.cnblogs.com/linuxprobe/archive/2016/03/29/5331585.html
-Advertisement-
Play Games

自從甲骨文收購 MySQL 後,由於甲骨文對 MySQL 的開發和維護更多傾向於閉門的立場,很多 MySQL 的開發者和用戶放棄了它。在社區驅動下,促使更多人移到 MySQL 的另一個叫 MariaDB 的分支,在原有 MySQL 開發人員的帶領下,MariaDB 的開發遵循開源的理念,並確保它的二 ...


自從甲骨文收購 MySQL 後,由於甲骨文對 MySQL 的開發和維護更多傾向於閉門的立場,很多 MySQL 的開發者和用戶放棄了它。在社區驅動下,促使更多人移到 MySQL 的另一個叫 MariaDB 的分支,在原有 MySQL 開發人員的帶領下,MariaDB 的開發遵循開源的理念,並確保它的二進位格式與 MySQL 相容。眾多Linux 發行版例如Red Hat等都支持 MariaDB 作為 MySQL 的直接替換品。
Mysql_to_MariaDB
如果你想要將 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 的官方倉庫.
Download_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;

query_data_in_sql

結論

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

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

故障排除
在運行 mysqldump 命令備份資料庫時出現以下錯誤。

mysqldump: Error: Binlogging on server not active

通過使用 "--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/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. daemon 和 service 系統為了實現某些功能,必須提供一些服務(service),但是service的提供總是需要進程的運行,實現service 的程式我們稱為daemon(“守護神”,"惡魔"). 1.1用chkconfig查看當前開啟的服務: a: 先用runlevel查看當前的 ...
  • Windows系統和Linux系統的硬碟分區 Windows系統中的硬碟是通過磁碟0,磁碟1,來表示第一塊硬碟,第二塊硬碟,然後在第一塊硬碟磁碟0上進行分區,分區使用盤符表示的比如C盤,D盤……等等,一般盤符從C到Z順延,但是我在Win7測,盤符可以為A,B,但是A,B可不可以做主分區我就不知道了。... ...
  • 為了跨平臺調試,在Mac Air使用Bootscamp安裝了Windows 8.1,但是經常出現system_thread_exceptions_not_handled(Wpprecorder.sys)的故障,並導致藍屏,只有通過修複系統才能正常啟動。但是過一段時間又會出現,經過反覆嘗試,最終解決。 ...
  • 對於硬體工程師來說,一些工具的使用也至關重要,工具使用的不當,往往導致得到的結果也是不正確的,可能會給硬體工程師一個錯誤的判斷。本章就會列舉出很多實用的關於硬體工程師必須要會的一些工具的使用方法和技巧。 測電源紋波 電源紋波如何測得?你設計的電源紋波多大?你怎麼降低電源的紋波和雜訊? 以上一系列問題 ...
  • 先登錄mysql ==》mysql -uroot -p 查看資料庫的版本 select version(); 查看有哪些庫 show datases; 查看當前處於哪個庫 select database(); 查看當前登錄用戶 select user(); 查看某個庫下麵的表; use db; sh ...
  • 最近一直在調試視頻 採集卡,和PC端連接的是USB介面,使用的是cypress的CY7C68013A-56PVXC,現列舉一下對於CY7C68013無法識別的可能存在原因。在設備管理器裡面顯示的VID/PID為全0。 上圖是CY7C68013A-56PVXC和EEPROM的最小系統。 若是按照上圖接 ...
  • 雖然ubuntu的中國伺服器的速度已經非常不錯,但是難免,會有網路不暢的情形,所以修改軟體源地址是一個基礎的知識點。 修改ubuntu的軟體源的方式有多種,一直是通過ubuntu軟體中心提供的UI,還有一種就是通過編輯/etc/apt/sources.list配置文件。 UI操作 通過軟體中心配置軟... ...
  • SCCM 部署操作系統 ,提示許可權問題,報錯:0xc00000098 這個問題通過查看日誌,論壇搜索,博客等。下麵是最終的解決方法: 1.檢查所有組件是否已安裝。(IIS組件等)。(分發站點證書是否正常) 2.在分發點將PEX鉤去掉。 3.卸載WDS重啟SCCM伺服器。 4.卸載管理組件。 5.卸載 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...