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

发布于 2024-11-21 07:50:39 字数 5504 浏览 0 评论 0

大家好!这是一篇介绍如何在服务器或个人电脑上从 MySQL 迁移到 MariaDB 的教程。也许你会问为什么我们要将数据库管理从 MySQL 迁移到 MariaDB。往下看我们告诉你为什么这样做。

为什么要用 MariaDB 来代替 MySQL

MariaDB 是 MySQL 社区开发的分支,也是一个增强型的替代品。它由 MySQL 前开发者们带头组织的基金会开发,使用起来和 MySQL 完全一样。自从 Oracle 买下了 MySQL,它就不再自由开源了,但是 MariaDB 仍然自由开源 。一些如谷歌、维基、LinkedIn、Mozilla 等的顶级的网站已经迁移到 MariaDB 了。它的优势在哪里:

  • 向后兼容 MySQL
  • 永远开源
  • 由 MySQL 缔造者的维护
  • 更尖端的功能
  • 更多的存储引擎
  • 大型的网站已经转向 MariaDB

现在,让我们迁移到 MariaDB 吧!

让我们创建一个叫 linoxidedb用于测试的 示例数据库。

使用以下命令用 root 账户登陆 MySQL:

$ mysql -u root -p

输入 mysql 的 root 用户密码后,你将进入 mysql 的命令行

创建测试数据库:

在 mysql 命令行输入以下命令以创建测试数据库。

mysql> create database linoxidedb;

查看可用的数据库,输入以下命令:

mysql> show databases;

creating test databases

如你所见,算上刚刚新建的 linoxidedb 我们一共有 5 个数据库。

mysql> quit

现在,我们就将刚创建的数据库从 MySQL 迁移到 MariaDB。

注:使用 CentOS 这类基于 fedora 的 linux 发行版没有必要参考这篇教程,因为它们在安装 MariaDB 时会自动代替 MySQL,无需备份现有的数据库,你只需要更新 mysql 就可以得到 mariadb。

1. 备份现有的数据库

我们第一个重要的步骤就是备份现有的数据库。我们在 终端(不是 MySQL 命令行) 里输入如下命令来完成备份。

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

哇哦!我们遇到了点麻烦。别担心我们可以搞定。

$ mysqldump: Error: Binlogging on server not active

mysqldump error

为了修复这个错误,我们需要对 my.cnf 文件做一些小改动。

编辑 my.cnf 文件:

$ sudo nano /etc/mysql/my.cnf

在[mysqld]部分添加如下参数。

log-bin=mysql-bin

configuring my.cnf

好了,在保存并关闭文件后,我们需要重启一下 mysql 服务。运行以下命令重启:

$ sudo /etc/init.d/mysql restart

现在,重新运行 mysqldump 命令来备份所有的数据库。

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

dumping databases

上面的命令将会备份所有的数据库,把它们存储在当前目录下的 backupdatabase.sql 文件中。

2. 卸载 MySQL

首先,我们得把 my.cnf 文件挪到安全的地方去

:在你卸载 MySQL 包的时候不会自动删除 my.cnf 文件,我们这样做只是以防万一。在 MariaDB 安装时,它会询问我们是保持现存的 my.cnf 文件,还是使用包中自带的版本(即新 my.cnf 文件)。

在 shell 或终端中输入如下命令来备份 my.cnf 文件:

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

运行命令来终止 mysql 服务:

$ sudo /etc/init.d/mysql stop

然后移除 mysql 包:

$ sudo apt-get remove mysql-server mysql-client

uninstalling mysql

3. 安装 MariaDB

这是在 Ubuntu 系统中安装 MariaDB 的命令:

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

adding mariadb repo

键值导入并且添加完仓库后,你就可以用以下命令安装 MariaDB 了:

$ sudo apt-get update
$ sudo apt-get install mariadb-server

installing mariadb

my.conf configuration prompt

我们应该还没忘记在 MariaDB 安装时,它会问你是使用现有的 my.cnf 文件,还是包中自带的版本。你可以使用以前的 my.cnf 也可以用包中自带的。即使你想直接使用新的 my.cnf 文件,你依然可以晚点时候将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考 MariaDB 官方仓库

4. 恢复配置文件

想要将 my.cnf.bak 中的内容恢复到 my.cnf,在终端中输入以下命令。由于 my.cnf.bak 文件在当前目录下,所以我们只要简单的执行以下命令即可:

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

5. 导入数据库

最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。

$ mysql -u root -p < backupdatabase.sql

就这样,我们已成功将之前的数据库导入了进来。

来,让我们登录一下 mysql 命令行,检查一下数据库是否真的已经导入了:

$ mysql -u root -p

importing database

为了检查数据库是否被迁移到 MariaDB,请在 MariaDB 命令行中输入“ show databases ;”不用输入(“”),如下:

mariaDB> show databases;

mysql to mariadb database migrated

如你所见,linoxidedb 及所有的数据库都已经成功的被迁移了。

总结

最后,我们已经成功地从 MySQL 迁移到了 MariaDB 数据库管理系统。MariaDB 比 MySQL 好,虽然在性能方面 MySQL 还是比它更快,但是 MariaDB 的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下 MySQL 还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

美煞众生

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

有深☉意

文章 0 评论 0

硪扪都還晓

文章 0 评论 0

DS

文章 0 评论 0

我也只是我

文章 0 评论 0

TangBin

文章 0 评论 0

橪书

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文