2.7. 迁移到 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.7.1. MariaDB 10.3 和 MariaDB 10.5 之间的显著区别 复制链接链接已复制到粘贴板!
MariaDB 10.3 和 MariaDB 10.5 之间的显著变化包括:
-
MariaDB 现在默认使用
unix_socket身份验证插件。该插件允许用户在通过本地 UNIX 套接字文件连接到 MariaDB 时使用操作系统凭证。 -
MariaDB添加了mariadb-*命名的二进制文件和指向mariadb-*的mysql*符号链接。例如,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软件包。
这个步骤描述了使用 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_clustermariadb服务将自动启动。
执行 mariadb-upgrade 工具来检查和修复内部表。
在升级独立运行的数据库时:
$ mariadb-upgrade在升级 Galera 集群节点时:
$ mariadb-upgrade --skip-write-binlog
有一些与原位升级相关的风险和已知问题。例如,一些查询可能无法正常工作,或者它们以与升级前不同的顺序运行。有关这些风险和问题的更多信息,以及有关原位升级的常规信息,请参阅 MariaDB 10.5 发行注记。