2.6. 迁移到 MariaDB 10.5
在 RHEL 8 中,MariaDB 服务器在 10.3、10.5 和 10.11 版本中可用,每个版本都由单独的模块流提供。RHEL 9 提供 MariaDB 10.5、MariaDB 10.11 和 MySQL 8.0。
这部分论述了从 RHEL 8 中的 MariaDB 10.3 版本迁移到 RHEL 9 中的 MariaDB 10.5 版本。
2.6.1. MariaDB 10.3 和 MariaDB 10.5 之间的显著区别
MariaDB 10.3 和 MariaDB 10.5 之间的显著变化包括:
-
MariaDB 现在默认使用
unix_socket
身份验证插件。该插件允许用户在通过本地 UNIX 套接字文件连接到 MariaDB 时使用操作系统凭证。 -
MariaDB
添加了名为 binary、mysql*
符号链接,指向mariadb114
二进制文件。例如,
mysqladmin
、mysqlaccess
和mysqlshow
分别指向mariadb-admin
、mariadb-access
和mariadb-show
二进制代码。 -
SUPER
特权已被分成几个特权,以更好地与每个用户角色保持一致。因此,某些语句已更改了所需的权限。 -
在并行
复制中,slave_parallel_mode
现在被默认设置为静态
。 -
在 InnoDB 存储引擎 中,以下变量的默认值已发生变化:
innodb_adaptive_hash_index
变为OFF
,innodb_checksum_algorithm
变为full_crc32
。 MariaDB 现在使用用于管理 MariaDB 命令历史记录(the
.mysql_history
文件)的底层软件的libedit
实施,而不是之前使用的readline
库。此更改会影响直接使用.mysql_history
文件的用户。注意.mysql_history
是一个由 MariaDB 或 MySQL 应用管理的文件,用户不应直接使用该文件。人类可读的外表是巧合。注意要提高安全性,您可以考虑不维护历史记录文件。禁用记录命令历史记录:
-
删除
.mysql_history
文件(如果存在的话)。 使用以下任一方法:
-
将
MYSQL_HISTFILE
变量设置为/dev/null
,并将此设置包含在您的任何 shell 启动文件中。 将
.mysql_history
文件更改为指向/dev/null
的符号链接:$ ln -s /dev/null $HOME/.mysql_history
-
将
-
删除
MariaDB Galera 集群 已升级到版本 4,有以下显著变化:
- Galera 添加了一个新的流复制特性,其支持复制无限大小的事务。在执行流复制的过程中,集群以小片段复制事务。
- Galera 现在完全支持全球交易 ID(GTID)。
-
/etc/my.cnf.d/galera.cnf
文件中的wsrep_on
选项的默认值已从1
改为0
,以防止最终用户在没有配置所需的附加选项的情况下启动wsrep
复制。
在 MariaDB 10.5 中对 PAM 插件的更改包括:
-
MariaDB 10.5 添加了可插拔验证模块(PAM)插件的新版本。PAM 插件版本 2.0 使用单独的
setuid root
帮助程序二进制文件来执行 PAM 身份验证,这使得 MariaDB 可以使用额外的 PAM 模块。 -
帮助程序二进制文件只能由
mysql
组中的用户执行。默认情况下,组只包含mysql
用户。红帽建议管理员不要向mysql
组添加更多用户,以防止无需通过这个助手工具进行节流或记录的情况下的密码猜测攻击。 -
在 MariaDB 10.5 中,可插拔验证模块(PAM)插件及其相关文件已移至新软件包
mariadb-pam
。因此,在不使用对MariaDB
进行PAM 验证的系统中不会引入新的setuid root
二进制文件。 -
mariadb-pam
软件包同时包含 PAM 插件版本: 版本 2.0 是默认值,版本 1.0 作为auth_pam_v1
共享对象库提供。 -
默认情况下,
mariadb-pam
软件包不与 MariaDB 服务器一起安装 。要使 PAM 身份验证插件在 MariaDB 10.5 中提供,请手动安装mariadb-pam
软件包。
2.6.2. 从 RHEL 8 的 MariaDB 10.3 迁移到 RHEL 9 版本的 MariaDB 10.5
这个步骤描述了使用 mariadb-upgrade
程序从 MariaDB 10.3 迁移到 MariaDB 10.5。
mariadb-upgrade
实用程序由 mariadb-server-utils
子软件包提供,该子软件包作为 mariadb-server
软件包的依赖项安装。
先决条件
- 在执行升级前,备份存储在 MariaDB 数据库中的所有数据。
流程
确定在 RHEL 9 系统中安装了
mariadb-server
软件包:# dnf install mariadb-server
确保
mariadb
服务在复制数据时没有在源和目标系统上运行:# systemctl stop mariadb.service
-
将源位置的数据复制到 RHEL 9 目标系统的
/var/lib/mysql/
目录中。 对目标系统上复制的文件设置适当的权限和 SELinux 上下文:
# restorecon -vr /var/lib/mysql
确保
mysql:mysql
是/var/lib/mysql
目录中所有数据的所有者:# chown -R mysql:mysql /var/lib/mysql
-
调整配置,以便位于
/etc/my.cnf.d/
中的选项文件只包含对 MariaDB 10.5 有效的选项。详情请参阅 MariaDB 10.4 和 MariaDB 10.5 的上游文档。 在目标系统中启动 MariaDB 服务器。
在升级独立运行的数据库时:
# systemctl start mariadb.service
在升级 Galera 集群节点时:
# galera_new_cluster
mariadb
服务将自动启动。
执行 mariadb-upgrade 工具来检查和修复内部表。
在升级独立运行的数据库时:
$ mariadb-upgrade
在升级 Galera 集群节点时:
$ mariadb-upgrade --skip-write-binlog
有一些与原位升级相关的风险和已知问题。例如,一些查询可能无法正常工作,或者它们以与升级前不同的顺序运行。有关这些风险和问题的更多信息,以及有关原位升级的常规信息,请参阅 MariaDB 10.5 发行注记。