当前位置: 首页 > 工具软件 > MySQL Maria > 使用案例 >

从 MySQL 5.7 迁移到 MariaDB 10.1

乐山
2023-12-01

在 MariaDB 成为可能和可行的选择之前,我从来没有真正需要关注它。现有的技术决策是显而易见的,迁移到更新版本的 MySQL 并继续使用它,以及 Oracle 成为所有者的未知数,或者迁移到 MariaDB,这是 MySQL 的广为人知的社区替代品。

在阅读了大约一个小时后,我决定从 MySQL 到 MariaDB 进行所谓的神奇迁移,这就是我所学到的。

接下来的步骤都是在安装了 MySQL 5.7.13 版本的 CentOS 7 上执行的,并使用以下文章作为参考:https ://mariadb.com/kb/en/mariadb/yum/

要执行的第一个步骤是显而易见的:

所有数据库的mysqldump
/var/lib/mysql 的备份
/etc/my.cnf 的备份
下一步非常令人讨厌,因为它需要的不仅仅是简单的 yum 删除。

sudo yum 删除 mysql mysql-server mysql-common

默认情况下,这应该会删除 MySQL 中的所有引用,但是如果仍然有引用,MariaDB 将不会通过安装检查,请运行以下命令:

sudo yum 列表已安装 | grep -i mysql

它会给你一个这样的列表:

mysql-community-client.x86_64 5.7.13–1.el7 @mysql57-community
mysql-community-common.x86_64 5.7.13–1.el7 @mysql57-community
mysql-community-libs.x86_64 5.7.13–1.el7 @mysql57-community
mysql-community-libs-compat.x86_64 5.7.13–1.el7 @mysql57-community
mysql-community-server.x86_64 5.7.13–1.el7 @mysql57-community
mysql57-community-release.noarch el7–7 @/mysql57-community-release-el7–7.noarch

除了 PHP-MySQL 之类的库之外,其余的都必须删除。这可以通过简单地运行来完成:

mysql-community-client.x86_64 5.7.13–1.el7

如果您阅读过任何有关如何执行从 MySQL 迁移到 MariaDB(直至 MySQL 5.6 和 MariaDB 10.0)的文章,您需要做的唯一一件事就是创建 yum 存储库并安装 MariaDB,但是这个选项效果不太好。

以下步骤是我为正确安装 MariaDB 10.1 以进行 MySQL 5.7 迁移而执行的每一个步骤。

第 1 步 — 创建 Yum 存储库
须藤 vi /etc/yum.repos.d/MariaDB.repo

[玛丽亚数据库]
名称 = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

第 2 步 — 安装 rpm 密钥
sudo rpm — 导入 https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
第 3 步 — 完全删除 MySQL 数据
是的,您没看错,删除 /var/lib/mysql ,这是正确执行此操作的唯一方法。如果您在开始此操作时尚未进行备份,则停止并返回 MySQL。

sudo rm -rf /var/lib/mysql

使用该文件夹安装 MariaDB 10.1,您会在 InnoDB 中收到一个明显的错误,无论您搜索多少次,您都不会找到一个好的解决方案。以下是完整的错误副本:

[vagrant@localmachine ~]$ sudo journalctl -xe
— 单元 mariadb.service 失败。
—
— 结果失败。
6 月 27 日 17:46:46 vagrant systemd[1]:单元 mariadb.service 进入失败状态。
6 月 27 日 17:46:46 vagrant systemd[1]:mariadb.service 失败。
Jun 27 17:46:46 vagrant polkitd[656]: unregistered Authentication Agent for unix-process:12731:154478(系统总线名称:1.31,对象路径/org/freedesktop/PolicyKit1/AuthenticationAgent,
6 月 27 日 17:47:25 vagrant sudo[12754]: vagrant : TTY=pts/0 ; PWD=/home/vagrant ; 用户=根;COMMAND=/bin/systemctl start mariadb.service
6 月 27 日 17:47:25 vagrant polkitd[656]:unix-process:12755:158423 的注册身份验证代理(系统总线名称:1.33 [/usr/bin/pkttyagent — notify-fd 5 — fallback],对象路径 /org
6 月 27 日 17:47:25 vagrant systemd[1]: 启动 MariaDB 数据库服务器…
— 主题:单元 mariadb.service 已开始启动
— 定义者:systemd
— 支持:http://lists.freedesktop.org/mailman/listinfo/systemd-devel
—
— 单元 mariadb.service 已开始启动。
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] /usr/sbin/mysqld (mysqld 10.1.14-MariaDB) 从进程 12760 ...
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [Note] InnoDB: Using mutexes to ref count buffer pool pages
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] InnoDB: InnoDB 内存堆被禁用
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [Note] InnoDB: Memory barrier is not used
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] InnoDB:压缩表使用 zlib 1.2.7
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] InnoDB: Using Linux native AIO
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [Note] InnoDB: Using SSE crc32 instructions
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [Note] InnoDB: Initializing buffer pool, size = 128.0M
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] InnoDB: 缓冲池初始化完成
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] InnoDB:最高支持的文件格式是梭子鱼。
6 月 27 日 17:47:26 vagrant mysqld [12760]:InnoDB:找不到有效的检查点。
6 月 27 日 17:47:26 vagrant mysqld[12760]:InnoDB:如果您尝试从 MySQL 5.7.9 或更高版本降级,
Jun 27 17:47:26 vagrant mysqld[12760]: InnoDB: 请参考 http://dev.mysql.com/doc/refman/5.6/en/upgrading-downgrading.html
Jun 27 17:47:26 vagrant mysqld[12760]: InnoDB: 如果在创建 InnoDB 数据库时出现此错误,
6 月 27 日 17:47:26 vagrant mysqld[12760]: InnoDB: 问题可能是在你之前的尝试中
Jun 27 17:47:26 vagrant mysqld[12760]: InnoDB: to create the InnoDB data files, 但日志文件创建失败。
Jun 27 17:47:26 vagrant mysqld[12760]: InnoDB: 如果是这样,请参考
6 月 27 日 17:47:26 vagrant mysqld[12760]: InnoDB: http://dev.mysql.com/doc/refman/5.6/en/error-creating-innodb.html
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [错误] 插件“InnoDB”初始化函数返回错误。
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [错误] 插件“InnoDB”注册为存储引擎失败。
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [注意] 插件“反馈”已禁用。
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [错误] 无法打开 mysql.plugin 表。某些插件可能未加载
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [错误] 未知/不支持的存储引擎:InnoDB
Jun 27 17:47:26 vagrant mysqld[12760]: 2016–06–27 17:47:26 140668548266112 [错误] 中止
6 月 27 日 17:47:26 vagrant systemd[1]: mariadb.service: 主进程退出,code=exited,status=1/FAILURE
6 月 27 日 17:47:26 vagrant systemd[1]:无法启动 MariaDB 数据库服务器。
— 主题:单元 mariadb.service 失败
— 定义者:systemd
— 支持:http://lists.freedesktop.org/mailman/listinfo/systemd-devel
—
— 单元 mariadb.service 失败。
—
— 结果失败。
6 月 27 日 17:47:26 vagrant systemd[1]:单元 mariadb.service 进入失败状态。
6 月 27 日 17:47:26 vagrant systemd[1]:mariadb.service 失败。
Jun 27 17:47:26 vagrant polkitd[656]: unregistered Authentication Agent for unix-process:12755:158423(系统总线名称:1.33,对象路径/org/freedesktop/PolicyKit1/AuthenticationAgent,
6 月 27 日 17:47:40 vagrant sudo[12775]: vagrant : TTY=pts/0 ; PWD=/home/vagrant ; 用户=根;COMMAND=/bin/systemctl status mariadb.service
6 月 27 日 17:48:10 vagrant sudo[12777]: vagrant : TTY=pts/0 ; PWD=/home/vagrant ; 用户=根;命令=/bin/journalctl -xe
第 2790–2842/2842 行(完)

第 4 步 — 安装 Maria DB
现在该文件夹已被删除并且您获得了所有 SQL 转储,请安装 MariaDB

sudo yum install MariaDB-server MariaDB-client

最后一步——启动服务并恢复 DBS
现在剩下的就是恢复服务并安装 SQL 转储。

sudo systemctl 启动 mariadb

这不是一个令人愉快的解决方案,但它是一个解决方案,直到他们像 MariaDB 10.0 一样进行神奇的迁移工作

我已经做了几个小时的搜索和测试,直到我得出结论,至少目前,没有从 MySQL 5.7 到 MariaDB 10.1 的直接简单的神奇迁移路径,但有一条路径。在此期间,我发现他们的 IRC 频道非常有用,而且您找不到与 MySQL 一样多的答案,这使得在搜索有助于解决很多问题的东西时变得更加困难,而 MySQL 又回来了答案。

希望这有助于以同样的方式帮助我。

笔记:
在昨天进行所有这些测试时,我错过了该过程的一个重要部分:https ://dev.mysql.com/doc/refman/5.5/en/upgrading.html

我将再次进行测试,但是,根据我使用 MariaDB 10.0 完成的另一项测试所获得的结果,我相信在流程之前的这些步骤并运行它:

mysql_upgrade -u -p

完全安装后应该解决所有在魔法完全发挥作用之前描述的问题。

 类似资料: