在 Linux 中怎样将 MySQL 迁移到 MariaDB 上

自从甲骨文收购 MySQL 后,由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场,很多 MySQL 的开发者和用户放弃了 MySQL。在社区驱动下,促使更多人移到 MySQL 的另一个叫 MariaDB 的分支。在原有 MySQL 开发人员的带领下,MariaDB 的开发遵循开源的理念,并确保它的二进制格式与 MySQL 兼容。Linux 发行版如 Red Hat 家族(Fedora,CentOS,RHEL),Ubuntu 和 Mint,openSUSE 和 Debian 已经开始使用,并支持 MariaDB 作为 MySQL 的直接替换品。

如果你想要将 MySQL 中的数据库迁移到 MariaDB 中,这篇文章就是你所期待的。幸运的是,由于他们的二进制兼容性,MySQL-to-MariaDB 迁移过程是非常简单的。如果你按照下面的步骤,将 MySQL 迁移到 MariaDB 会是无痛的。

准备 MySQL 数据库和表

出于演示的目的,我们在做迁移之前在数据库中创建一个测试的 MySQL 数据库和表。如果你在 MySQL 中已经有了要迁移到 MariaDB 的数据库,跳过此步骤。否则,按以下步骤操作。

在终端输入 root 密码登录到 MySQL 。


  1. $ mysql -u root -p

创建一个数据库和表。


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

在表中添加一些数据。


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

退出 MySQL 数据库.

备份 MySQL 数据库

下一步是备份现有的 MySQL 数据库。使用下面的 mysqldump 命令导出现有的数据库到文件中。运行此命令之前,请确保你的 MySQL 服务器上启用了二进制日志。如果你不知道如何启用二进制日志,请参阅结尾的教程说明。


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

现在,在卸载 MySQL 之前先在系统上备份 my.cnf 文件。此步是可选的。


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

卸载 MySQL

首先,停止 MySQL 服务。


  1. $ sudo service mysql stop

或者:


  1. $ sudo systemctl stop mysql

或:


  1. $ sudo /etc/init.d/mysql stop

然后继续下一步,使用以下命令移除 MySQL 和配置文件。

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


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

在基于 Debian 的系统上(例如, Debian, Ubuntu 或 Mint):


  1. $ sudo apt-get remove mysql-server mysql-client mysql-common
  2. $ sudo apt-get autoremove
  3. $ sudo apt-get autoclean
  4. $ sudo deluser mysql
  5. $ 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


  1. $ sudo apt-get install software-properties-common
  2. $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
  3. $ sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main'
  4. $ sudo apt-get update
  5. $ sudo apt-get install mariadb-server

CentOS 7

以下为 MariaDB 创建一个自定义的 yum 仓库文件。


  1. $ sudo vi /etc/yum.repos.d/MariaDB.repo


  1. [mariadb]
  2. name = MariaDB
  3. baseurl = http://yum.mariadb.org/5.5/centos7-amd64
  4. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  5. gpgcheck=1


  1. $ sudo yum install MariaDB-server MariaDB-client

安装了所有必要的软件包后,你可能会被要求为 MariaDB 的 root 用户创建一个新密码。设置 root 的密码后,别忘了恢复备份的 my.cnf 文件。


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

现在启动 MariaDB 服务。


  1. $ sudo service mariadb start

或:


  1. $ sudo systemctl start mariadb

或:


  1. $ sudo /etc/init.d/mariadb start

导入 MySQL 的数据库

最后,我们将以前导出的数据库导入到 MariaDB 服务器中。


  1. $ mysql -u root -p < backupdb.sql

输入你 MariaDB 的 root 密码,数据库导入过程将开始。导入过程完成后,将返回到命令提示符下。

要检查导入过程是否完全成功,请登录到 MariaDB 服务器,并查看一些样本来检查。


  1. $ mysql -u root -p


  1. MariaDB [(none)]> show databases;
  2. MariaDB [(none)]> use test01;
  3. MariaDB [test01]> select * from pet;

结论

如你在本教程中看到的,MySQL-to-MariaDB 的迁移并不难。你应该知道,MariaDB 相比 MySQL 有很多新的功能。至于配置方面,在我的测试情况下,我只是将我旧的 MySQL 配置文件(my.cnf)作为 MariaDB 的配置文件,导入过程完全没有出现任何问题。对于配置文件,我建议你在迁移之前请仔细阅读 MariaDB 配置选项的文件,特别是如果你正在使用 MySQL 的特定配置。

如果你正在运行有海量的表、包括群集或主从复制的数据库的复杂配置,看一看 Mozilla IT 和 Operations 团队的 更详细的指南 ,或者 官方的 MariaDB 文档

故障排除

1、 在运行 mysqldump 命令备份数据库时出现以下错误。


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


  1. mysqldump: Error: Binlogging on server not active

通过使用 "--master-data",你可以在导出的输出中包含二进制日志信息,这对于数据库的复制和恢复是有用的。但是,二进制日志未在 MySQL 服务器启用。要解决这个错误,修改 my.cnf 文件,并在 [mysqld] 部分添加下面的选项。(LCTT 译注:事实上,如果你并没有启用二进制日志,那取消"--master-data"即可。)


  1. log-bin=mysql-bin

保存 my.cnf 文件,并重新启动 MySQL 服务:


  1. $ sudo service mysql restart

或者:


  1. $ sudo systemctl restart mysql

或:


  1. $ sudo /etc/init.d/mysql restart


  2. 本文来自合作伙伴“Linux中国”,原文发布日期:2015-09-14
时间: 2024-11-03 08:04:48

在 Linux 中怎样将 MySQL 迁移到 MariaDB 上的相关文章

Linux下将数据库从MySQL迁移到MariaDB的基础操作教程_Mysql

自从2012年来,维基百科已经开始从MySQL迁移到MariaDB的过程,是维基媒体数据库架构变革的一个重大里程碑,将英文和德文版的维基百科数据库Wikidata移植到了MariaDB 5.5版本上. 在过去几年中,维基百科一直使用 Facebook 的 MySQL 5.1 衍生版本 作为我们的产品数据库,构建版本号是r3753.我们很高兴该产品的性能表现,Facebook 有着全世界最棒的数据库工程师,他们为 MySQL 生态系统带去了很多改进. 现在 MariaDB 的优化器的增强.Perc

Linux 上从 MySQL 迁移到 MariaDB 的简单步骤

Linux 上从 MySQL 迁移到 MariaDB 的简单步骤 大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程.也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB.往下看我们告诉你为什么这样做. 为什么要用MariaDB来代替MySQL MariaDB是MySQL社区开发的分支,也是一个增强型的替代品.它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样.自从Oracle买下了MySQL,它就不再自由开源了,但是 Mar

Linux系统上MySQL迁移到MariaDB的【图文教程】

MariaDB来代替MySQL的原因 MariaDB使用起来和MySQL完全一样.自从Oracle买下了MySQL,它就不再自由开源了,但是 MariaDB仍然自由开源.一些如谷歌.维基.LinkedIn.Mozilla等的顶级的网站已经迁移到MariaDB了.它的优势在哪里: 向后兼容MySQL 永远开源 由MySQL缔造者的维护 更尖端的功能 更多的存储引擎 大型的网站已经转向MariaDB 现在,让我们迁移到MariaDB吧! 让我们创建一个叫linoxidedb的用于测试的示例数据库.

从MySQL迁移到MariaDB(CentOS)

下面先摘录一点背景介绍,然后是我在 CentOS 6.4 上从 MySQL 5.5.31 迁移至 MariaDB 5.5.31 的操作记录.最后是我后来发现一个较好的迁移方法. 1. 背景介绍 MySQL是世界上最流行的开源关系数据库.2008 年,Sun 收购 MySQL.然后 2010 年,甲骨文又收购了 Sun,于是 MySQL 落入了甲骨文(Oracle)手中.Oracle 与开源社区关系的一直不太好,甚至 MySQL 也被弄成了社区版和企业版,不能免费商业使用:MySQL 企业版的新功

维基百科正式从MySQL迁移到MariaDB数据库

近日,http://www.aliyun.com/zixun/aggregation/31877.html">全球最大的自由.免费.内容开放的网络百科全书Wikipedia正式从MySQL迁移到MariaDB数据库. 在做正式迁移前Wikipedia做了大量的准备工作,包括兼容性测试和性能测试,详情请看官方说明.此前,2012年CSDN研发频道曾报道过Wikipedia开发者Asher Feldman宣称将英文维基的一个(slave)数据库从MySQL5.1 + Facebook补丁集迁移

一步到位Linux中安装配置MySQL及补坑

Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现不少问题,所以在此列出以作防坑指南.   至于Mysql是什么,能做什么那就不用介绍了,主要讲安装. 环境       CentOS7.0 Mysql-5.7.17 用root用户安装 关闭防火墙或让涉及到的端口通过. -A INPUT -m state --state NEW -m tcp -p

linux中自动备份mysql数据库的脚本

在从库服务器给添加crontab任务,定时执行备份脚本  代码如下 复制代码 #crontab -e 添加以下内容:  代码如下 复制代码 1 1 * * * /data/task/backmysql.sh #vi /data/task/backupmysql.sh 在backupmysql.sh文件中添加以下脚本完成备份,并删除7天前的备份  代码如下 复制代码 #!/bin/bash backupdir=/data/backup/mysql mysql_bin_dir=/usr/local/

Linux中更改转移mysql数据库目录的步骤_Mysql

本文是简单整理一下这几天把MySQL从/var/lib/mysql目录下面转移到/home/mysql_data/mysql下面具体操作. 首先我们需要关闭MySQL,命令如下: #service mysqld stop 网上有很多人都是用的mysqladmin -u root -p shutdown,不过我这个是系统安装的是kloxo面板,root密码并不知道,虽然可以重置,但是比较麻烦. 然后是转移数据,为了安全期间,我们采用复制的命令cp,先找到mysql的原目录 #cd /var/lib

linux中简单备份mysql数据库shell脚本

 代码如下 复制代码 #!/bin/bash root_path=/data/backup #进入备份文件存放目录 cd $root_path #备份文件名,系统当前时间(年-月-日),注意'+'后边不留空格 file_name=$(date +"%Y-%m-%d").sql #username:用户名,password:密码,database:数据库名 mysqldump -uusername -ppassword database > $file_name echo &quo