自从甲骨文收购 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 。

$ 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。

下面例子中,我们使用 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 的特定配置。

故障排除

在运行 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

免费领取兄弟连IT教育原创linux运维工程师视频/细说linux教程,详情咨询官网客服:http://www.itxdl.cn/linux/

或者勾搭Q2430675018

欢迎加入linux交流群 478068715

转载于:https://www.cnblogs.com/shitoufengkuang/p/4894558.html

在 Linux 中怎样将 MySQL 迁移到 MariaDB 上相关推荐

  1. MySQL迁移至MariaDB

    为什么要用MariaDB来代替MySQL MariaDB是MySQL社区开发的分支,也是一个增强型的替代品.它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样.自从Oracle ...

  2. 在Linux中使用Graphics、drawString在图片上写文字时,中文问题

    在Linux中使用Graphics.drawString在图片上写文字时,中文写不出.乱码问题 主要因为Linux没有包含所需字体 1.先下载所需字体 2.将字体.ttc文件放到/usr/share/ ...

  3. Linux中如何使用mysql和php_hi 感恩节——Linux基础教程之mysql和php

    感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 学习Linux的前言 选择了Linux发行版本,你就会想如何开始学习Linux了. 1.当然是安装Lin ...

  4. date oracle 表中_从 MySQL 迁移数据到 Oracle 中的全过程

    一.前言 这里记录一次将MySQL数据库中的表数据迁移到Oracle数据库中的全过程 ,使用工具 Navicat,版本 12.0.11 操作环境及所用工具: mysql5.7 oracle18c wi ...

  5. 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库

    我们在Linux中安装完数据库(MySQL)后,使用navicat去进行远程连接时会报以下错误 这主要是因为我们没有给权限,所以外部主机没有权限访问linux中的MySQL 我们只需要登陆linux中 ...

  6. Linux中安装的mysql查不到配置文件my.cnf

    linux中找不到my.cnf 解决方法: MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL, 至此找到配置文件

  7. linux mysql 打补丁_一步到位Linux中安装配置MySQL及补坑

    Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现 ...

  8. mysql云上迁移_自建mysql 迁移到云上-问答-阿里云开发者社区-阿里云

    详细解答可以参考官方帮助文档 使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例.数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能 ...

  9. Linux系统安装Java和mysql并关联DBeaver,上传Springboot jar包,数据库如何防止黑客攻击

    Linux系统安装Java 安装版本jdk-8u171-linux-x64.tar.gz1,上传到linux的 root目录下 2,tar -zxvf jdk-8u171-linux-x64.tar. ...

  10. linux中pl怎么使用教程,在Zynq-7000上编程PL的3种方法

    在Zynq-7000上编程PL大致有3种方法: 1. 用FSBL,将bitstream集成到boot.bin中 2. 用U-BOOT命令 3. 在Linux下用xdevcfg驱动. 步骤: 1. 去掉 ...

最新文章

  1. Failed to resolve:com.android.support:appcompat-v7:27.+
  2. Centos-Mysql配置my.cnf内容
  3. 面向药物发现的深度图学习
  4. spring框架 web开发_go语言web开发框架:Iris框架讲解(一)
  5. iToken----开发前准备
  6. 每日一题(46)—— volatile
  7. WebRTC-集成qsv硬解码实现
  8. 6-4 破碎的键盘 uva11988
  9. nagios 流量监控和报警的shell脚本
  10. vue实现一个移动端屏蔽滑动的遮罩层
  11. 怎样用计算机画太极,用IF函数画个太极图
  12. SWUSTOJ #69 偷菜时间表
  13. 气象大数据平台(天擎)数据读取方法(python)(雷达数据下载)
  14. 仿淘宝、京东多重商品属性组合Sku标签
  15. Combined attach
  16. C语音数组数据从小到大排序
  17. NLP | textCNN textRNN 图文详解及代码
  18. Python--列表的操作
  19. 泛函分析笔记(十三) 傅里叶级数、紧自伴算子
  20. 好工具推荐系列:看图软件irfanview/Honeyview/pineapple-pictures

热门文章

  1. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
  2. 【Luogu】P1122最大子树和(DFS,树上DP)
  3. codevs 3160 最长公共子串
  4. curl模拟http请求
  5. sql多表查询的总结
  6. leetcode - Anagrams
  7. JavaScipt屏蔽浏览器右上角“最小化,最大化,关闭”
  8. MFC DLL向导(二)
  9. LuoguP3674 小清新人渣的本愿 BZOJ4810: [Ynoi2017]由乃的玉米田
  10. C#基础之--线程、任务和同步:一、异步委托