如何升级MariaDB数据库?

MySQL & MariaDB

1 前言

一个问题,一篇文章,一出故事。
今天测试Keycloak的升级,遇到如下错误提示,

RROR: Failed to start server in (production) mode
ERROR: [PersistenceUnit: keycloak-default] Unable to build Hibernate SessionFactory
ERROR: Persistence unit 'keycloak-default' was configured to run with a database version of at least '10.6.0', but the actual version is '10.5.22'. Consider upgrading your database. Alternatively, rebuild your application with 'jakarta.persistence.database-product-version=10.5.22' (but this may disable some features and/or impact performance negatively).

大致意思是数据库版本过低,没有满足Keycloak的需求。

2 最佳实践

2.1 测试环境

如何部署RHBK 26.2.5生产模式?

2.2 升级前的准备

2.2.1 备份数据库

mysqldump -u root -p --all-databases > /data/backup/mariadb_backup.sql

2.2.2 停止数据库服务

systemctl stop mariadb

2.2.3 设置安装源

vim /etc/yum.repos.d/mariadb-10.6-rhel9-amd64.repo

加入如下配置,

[mysql10.6-community]
name=MySQL 10.6 Community Server
baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.6/rhel/9/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

2.3 升级步骤

2.3.1 升级MariaDB

dnf install -y MariaDB-server-10.6.25

上面的是基于MariaDB官方源的安装,如果是默认安装的MariaDB,你可能需要使用如下命令先卸载,

dnf remove -y mariadb-server

升级完成后,你需要使用如下命令查看升级的版本,

mysql --version

可见如下提示,

mysql  Ver 15.1 Distrib 10.6.25-MariaDB, for Linux (x86_64) using  EditLine wrapper

2.3.2 启动数据库服务并设置自启动

systemctl start mariadb
systemctl enable mariadb

2.3.3 查看启动后的状态

# 启动数据库服务并检查版本

systemctl status mariadb

如果启动遇到如下错误提示,

Mar 06 16:08:36 rhbkdev01.cmdschool.org mariadbd[32628]: 2026-03-06 16:08:36 0 [ERROR] Incorrect definition of table mysql.event: expected column 'definer' at position 3 to have type varchar(, found type char(141).
Mar 06 16:08:36 rhbkdev01.cmdschool.org mariadbd[32628]: 2026-03-06 16:08:36 0 [ERROR] mariadbd: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.

以上错误需要按如下步骤修复,

mysql -u root -p
USE mysql;
ALTER TABLE event MODIFY COLUMN definer VARCHAR(91) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL DEFAULT '';
systemctl restart mariadb
没有评论

发表回复

MySQL & MariaDB
如何启用MariaDB密码验证插件?

1 前言 一个问题,一篇文章,一出故事。 MariaDB 提供了三种密码验证插件, – …

MySQL & MariaDB
如何部署Oracle Linux 9.x MySQL 8.x?

1 前言 MySQL相信不用笔者多做介绍,本章将要使用yum部署MySQL 8。 2 最佳实践 2. …

MySQL & MariaDB
如何部署Oracle Linux 9.x MariaDB?

1 基础知识 – MariaDB数据库管理系统是MySQL的一个分支 – M …