MySQL 8.0.35 单实例升级到MySQL 8.4.x

news/2026/1/21 21:59:11/文章来源:https://www.cnblogs.com/kerrycode/p/19508872

MySQL 8.0.35 单实例升级到MySQL 8.4.x

2026-01-21 21:46  潇湘隐者  阅读(0)  评论(0)    收藏  举报

因为MySQL 8.0.x版本即将于2026年4月结束服务支持,计划将手头MySQL 8.0.35升级到MySQL 8.4.8这个LTS版本. 下面是之前在测试环境的一些测试总结.仅供参考!

注意:之前官方只提供了MySQL 8.4.5,所以下面测试案例为MySQL 8.4.5,生产环境建议升级到8.4.8 LTS这个版本. 两者升级方式其实是一样的.

升级到MySQL 8.4.5有下面三种方式.我们打算以In-Place方式直接升级到MySQL8.4.5。

There are three main ways to upgrade MySQL; read the associated documentation to determine which type of upgrade is best suited for your situation.- An in-place upgrade: replacing the MySQL Server packages.- A logical upgrade: exporting SQL from the old MySQL instance to the new.- A replication topology upgrade: account for each server's topology role.

升级前准备

  1. 查看支持的平台

MySQL 8.4.*支持的平台可查看官方文档,官方文档位置:

https://www.mysql.com/support/supportedplatforms/database.html

当前的操作系统平台为RHEL 8.10, MySQL 8.4是支持的.

$ more /etc/redhat-release 
Red Hat Enterprise Linux release 8.10 (Ootpa)
  1. 下载安装介质

这里下载的安装介质如下所示

mysql-8.4.5-linux-glibc2.28-x86_64-minimal.tar.xz
mysql-shell-8.4.5-linux-glibc2.28-x86-64bit.tar.gz
mysql-router-8.4.5-linux-glibc2.28-x86_64.tar.xz
mysql-shell-8.4.5-1.el8.x86_64.rpm

因为我们的MySQL数据库都是二进制方式安装的. 所以本文只关注MySQL二进制安装方式的升级. 其它方式本文不做考虑.

环境检查

检查数据库版本

select @@version;
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.35    |
+-----------+
1 row in set (0.01 sec)mysql> 

检查MySQL Shell版本信息

$ mysqlsh --version
mysqlsh   Ver 8.0.35 for Linux on x86_64 - for MySQL 8.0.35 (MySQL Community Server (GPL))

如果单机环境没有安装MySQL Sell的话,也建议安装MySQL Shell工具,感觉这个工具非常好用.

MySQL Shell升级

首先,你应该判断MySQL Shell的安装方式, 然后根据安装方式(二进制包/源码/RPM包)选择下载对应的MySQL Shell安装介质. 如果没有安装MySQL Shell,则直接跳过这一步.

$ rpm -qa | grep mysql-shell
mysql-shell-8.0.35-1.el8.x86_64

如上所示,这里判断MySQL Shell是RPM包安装方式

备份Shell配置文件(如~/.mysqlsh/目录)

~/.mysqlsh

RMP包升级

不同的Linux发行版本,可能使用不同的安装方式

sudo rpm -Uvh mysql-shell-<version>.rpm (RHEL)
sudo dpkg -i mysql-shell_<version>.deb (Debian)

下面是实际环境升级例子:

rpm -Uvh mysql-shell-8.4.5-1.el8.x86_64.rpm
或
sudo rpm -Uvh mysql-shell-8.4.5-1.el8.x86_64.rpm

验证安装成功后的MySQL Shell版本

$ mysqlsh --version
mysqlsh   Ver 8.4.5 for Linux on x86_64 - for MySQL 8.4.5 (MySQL Community Server (GPL))

二进制包升级

解压MySQL Shell的二进制包到指定目录(/opt/mysql/)

tar -xvf mysql-shell-8.4.5-linux-glibc2.28-x86-64bit.tar.gz -C /opt/mysql/
cd /opt/mysql/
mv mysql-shell-8.4.5-linux-glibc2.28-x86-64bit mysqlsh

检查/修改配置环境变量~/.bash_profile

export PATH=$PATH:/opt/mysql/mysqlsh/bin

执行下面命令使之生效,并检查MySQL Shell版本信息. 如果之前的路径一致的情况下,可以跳过这个步骤.

$ source ~/.bash_profile

简单总结如下:

$ cd /opt/mysql/
$ mv mysqlsh mysqlsh.20260120
$ cd /data/soft/
$ tar -xvf mysql-shell-8.4.5-linux-glibc2.28-x86-64bit.tar.gz -C /opt/mysql
$ cd /opt/mysql/
$ mv mysql-shell-8.4.5-linux-glibc2.28-x86-64bit mysqlsh

MySQL Server升级

使用MySQL Shell检查升级具体事项,如下例子所示:

 MySQL  dbtest04:3306 ssl  SQL > util.checkForServerUpgrade();
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'util.checkForServerUpgrade()' at line 1MySQL  dbtest04:3306 ssl  SQL > MySQL  dbtest04:3306 ssl  SQL > MySQL  dbtest04:3306 ssl  SQL > MySQL  dbtest04:3306 ssl  SQL > MySQL  dbtest04:3306 ssl  SQL > \js
Switching to JavaScript mode...MySQL  dbtest04:3306 ssl  JS > util.checkForServerUpgrade()
The MySQL server at dbtest04:3306, version 8.0.33 - MySQL Community Server -
GPL, will now be checked for compatibility issues for upgrade to MySQL 8.4.4.
To check for a different target server version, use the targetVersion option.1) Removed system variables (removedSysVars)No issues found2) System variables with new default values (sysVarsNewDefaults)Warning: Following system variables that are not defined in yourconfiguration file will have new default values. Please review if you relyon their current values and if so define them before performing upgrade.binlog_transaction_dependency_tracking - default value will change fromCOMMIT_ORDER to WRITESET.group_replication_consistency - default value will change from EVENTUAL toBEFORE_ON_PRIMARY_FAILOVER.group_replication_exit_state_action - default value will change fromREAD_ONLY to OFFLINE_MODE.innodb_adaptive_hash_index - default value will change from ON to OFF.innodb_buffer_pool_in_core_file - default value will change from ON to OFF.innodb_buffer_pool_instances - default value will change from 8 (or 1 ifinnodb_buffer_pool_size < 1GB) to MAX(1, #vcpu/4).innodb_change_buffering - default value will change from all to none.innodb_doublewrite_files - default value will change frominnodb_buffer_pool_instances * 2 to 2.innodb_doublewrite_pages - default value will change frominnodb_write_io_threads to 128.innodb_flush_method - default value will change from fsynch (unix) orunbuffered (windows) to O_DIRECT.innodb_io_capacity - default value will change from 200 to 10000.innodb_io_capacity_max - default value will change from 200 to 2 xinnodb_io_capacity.innodb_log_buffer_size - default value will change from 16777216 (16MB) to67108864 (64MB).innodb_log_writer_threads - default value will change from ON to OFF ( if#vcpu <= 32 ).innodb_numa_interleave - default value will change from OFF to ON.innodb_page_cleaners - default value will change from 4 toinnodb_buffer_pool_instances.innodb_parallel_read_threads - default value will change from 4 toMAX(#vcpu/8, 4).innodb_purge_threads - default value will change from 4 to 1 ( if #vcpu <=16 ).More information:https://dev.mysql.com/blog-archive/new-defaults-in-mysql-8-0/3) Issues reported by 'check table x for upgrade' command (checkTableCommand)No issues found4) Checks for foreign keys not referencing a full unique index
(foreignKeyReferences)No issues found5) Check for deprecated or invalid user authentication methods.
(authMethodUsage)No issues found6) Check for deprecated or removed plugin usage. (pluginUsage)No issues found7) Check for deprecated or invalid default authentication methods in system
variables. (deprecatedDefaultAuth)No issues found8) Check for deprecated or invalid authentication methods in use by MySQL
Router internal accounts. (deprecatedRouterAuthMethod)No issues found9) Checks for errors in column definitions (columnDefinition)No issues found10) Check for allowed values in System Variables. (sysvarAllowedValues)No issues found11) Checks for user privileges that will be removed (invalidPrivileges)Verifies for users containing grants to be removed as part of the upgradeprocess.Notice: The following users have the SET_USER_ID privilege which will beremoved as part of the upgrade process:- 'root'@'localhost'Solution:- If the privileges are not being used, no action is required, otherwise,ensure they stop being used before the upgrade as they will be lost.12) Checks for partitions by key using columns with prefix key indexes
(partitionsWithPrefixKeys)No issues found
Errors:   0
Warnings: 18
Notices:  2NOTE: No fatal errors were found that would prevent an upgrade, but some potential issues were detected. Please ensure that the reported issues are not significant before upgrading.MySQL  dbtest04:3306 ssl  JS > 

关于升级到MySQL 8.4.5的MySQL参数变化以及调整,请参考官方文档. 这里不做过多阐述. 根据实际情况进行调整.

停止应用程序

此处略过.一般都有对应的流程与规范. 单机环境要确保业务已停止,保证业务数据的一致性.

确认应用是否停止

show processlist;

备份MySQL数据库

执行下面命令备份MySQL数据库.

/home/mysql/db_monitor/scripts/mysql_backup full

准备工作

检查有没有未提交的xa事务

mysql> xa recover;
Empty set (0.00 sec)

If you use XA transactions with InnoDB, run XA RECOVER before upgrading to check for uncommitted XA transactions.
If results are returned, either commit or rollback the XA transactions by issuing an XA COMMIT or XA ROLLBACK statement.

这一步感觉没有必要处理, 一般来说,我都会跳过.官方文档建议将此参数innodb_fast_shutdown调整为2

SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
SET GLOBAL innodb_fast_shutdown = 2; -- cold shutdown

关闭数据库服务

sudo systemctl stop mysqld.service
或
mysqladmin -u root -p shutdownsudo systemctl status mysqld.service

安装升级MySQL Server

$ tar -xvf mysql-8.4.5-linux-glibc2.28-x86_64.tar.xz  -C /opt/mysql/
$ cd /opt/mysql/
$ unlink  mysql8.0
$ ln -s /opt/mysql/mysql-8.4.5-linux-glibc2.28-x86_64 mysql8

保留之前的MySQL版本, 另外,修改环境变量和systemctl服务. 注意有些环境不用下面步骤, 这个测试环境的软连接为/opt/mysql/mysql8.0, 这里统一成规范/opt/mysql/mysql8

下面是安装之前的文件信息.

$ ls -lrt /opt/mysql/
total 0
drwxrwxr-x 9 mysql mysql 129 Mar  1  2024 mysql-8.0.35-linux-glibc2.28-x86_64
lrwxrwxrwx 1 mysql mysql  46 Mar  1  2024 mysql8.0 -> /opt/mysql/mysql-8.0.35-linux-glibc2.28-x86_64
$ vi ~/.bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programs
#export PATH=$PATH:/opt/mysql/mysql8.0/bin
export PATH=$PATH:/opt/mysql/mysql8/bin
export MYSQL_HISTFILE=/dev/null

source ~/.bash_profile 使之生效

vi /usr/lib/systemd/system/mysqld.service调整前:# Start main service
ExecStart=/opt/mysql/mysql8.0/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf $MYSQLD_OPTS调整后# Start main service
ExecStart=/opt/mysql/mysql8/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf $MYSQLD_OPTS

执行下面命令重新加载配置

systemctl daemon-reload

修改配置文件my.cnf

$ grep 8.0 my.cnf 
basedir=/opt/mysql/mysql8.0
plugin_dir=/opt/mysql/mysql8.0/lib/plugin  
lc-messages-dir=/opt/mysql/mysql8.0/share
#MySQL8.0就是这么做的,在设置了--skip-grant-tables参数的同时会自动开启--skip-networking。

修改后检查确认

$ grep 'mysql8' my.cnf 
basedir=/opt/mysql/mysql8
plugin_dir=/opt/mysql/mysql8/lib/plugin  
lc-messages-dir=/opt/mysql/mysql8/share

启动MySQL服务

sudo systemctl start mysqld.service

升级Xtrabackup

# rpm -Uvh percona-xtrabackup-84-8.4.0-3.1.el8.x86_64.rpm
warning: percona-xtrabackup-84-8.4.0-3.1.el8.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 8507efa5: NOKEY
error: Failed dependencies:percona-xtrabackup-80 conflicts with percona-xtrabackup-84-8.4.0-3.1.el8.x86_64# rpm -evh percona-xtrabackup-80.x86_64
Preparing...                          ################################# [100%]
Cleaning up / removing...1:percona-xtrabackup-80-8.0.35-30.1################################# [100%]
#yum localinstall percona-xtrabackup-84-8.4.0-3.1.el8.x86_64.rpm

Zabbix配置更新

在/etc/zabbix/zabbix_agentd.d中更新模板template_db_mysql.conf 中的配置信息.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1196416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

告别绘图内卷!虎贲等考 AI:一键生成期刊级科研图表的秘密武器

还在为 Origin 调参两小时只出一张图抓狂&#xff1f;还在因 PPT 示意图太丑被导师吐槽 “不像学术成果”&#xff1f;辛辛苦苦画的图表&#xff0c;却因格式不规范被期刊审稿人打回修改&#xff1f;作为深耕论文写作科普的博主&#xff0c;我实测多款绘图工具后发现&#xff0…

【模板】拟阵交

【模板】拟阵交 给定边集 \(E\),每条边都有一个颜色。给定数组 \(\{C_i\}\)。选出最大的子集使得:子集中找不到一个简单环;子集中颜色 \(c\) 的边的出现次数不超过 \(C[c]\)。 本题即为拟阵交的模板题,需要求解图拟…

[豪の算法奇妙冒险] 代码随想录算法训练营第三十五天 | 01背包问题-二维dp解法、01背包问题-一维dp解法、416-分割等和子集

01背包问题-二维dp解法、01背包问题-一维dp解法、LeetCode416 分割等和子集代码随想录算法训练营第三十五天 | 01背包问题-二维dp解法、01背包问题-一维dp解法、416-分割等和子集01背包问题-二维dp解法文章讲解:https…

expo-video实现横屏播放

我在使用expo-video的过程中,发现它的全屏功能很是差强人意,所以想自己二次封装一下 如果看过我之前的expo文章,应该可以轻松的读懂下面的代码 一、安装相关依赖 npx expo install expo-video expo-router expo-scr…

2026百度AI优化GEO服务商 TOP5:综合实力强的文心一言GEO服务商领跑AI搜索破局赛道

综合实力强的 GEO服务商 赋能品牌实现 百度AI 精准曝光与流量转化 随着生成式人工智能的迅速发展,AI搜索平台正在重构传统信息分发与获取的模式。特别是以百度“文心一言”为代表的AI原生平台,逐步替代了传统的搜索入…

【珍藏干货】从零开始实战:企业级AI售前机器人开发全流程(含三大核心系统详解)

“从0到1完成一个企业级AI售前机器人的实战指南。” AI应用中除了我们常见的工作流、各类功能节点之外&#xff0c;通常还会附带有三个辅助系统&#xff1a; 用来AI记住用户的历史交互信息&#xff0c;从而提供更连贯、个性化和高效的响应的记忆系统用来验证AI在实际应用中的…

盘点7款热门AI论文写作助手:提升学术效率并有效减少重复内容

AI写论文工具排名&#xff1a;7大模型查重率低技巧推荐 7大AI论文工具核心对比 工具名称 核心功能 查重优化 适用场景 效率评分 AiBiye 论文全流程辅助 智能降重 从选题到定稿 ★★★★★ AiCheck 查重与降重 深度降重算法 论文修改阶段 ★★★★☆ AskPaper …

想让win11暂停系统自动更新要怎么办?如何彻底禁止win11系统自动更新

Windows 11的自动更新功能&#xff0c;初衷是为了提升系统安全与性能。但在实际使用中&#xff0c;频繁的后台下载和强制重启往往让人困扰&#xff0c;尤其是对正在工作、游戏或需要稳定环境的用户来说&#xff0c;更是不可忽视的问题。因此&#xff0c;学会灵活地关闭或延迟自…

AI论文助手Top8:全方位对比主流平台写作水准与降重能力,高效解决用户需求

AI论文生成工具排行榜&#xff1a;8个网站对比&#xff0c;论文降重写作功能全 工具对比总结 以下是8个AI论文工具的简要排名&#xff0c;基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈&#xff0c;数据源于引用内容案例&#xff1a; 工具名称 主要功能 优…

Leetcode 238. Product of Array Except Self

问题理解 给定一个整数数组 nums,要求返回一个新数组 answer,其中 answer[i] 是除 nums[i] 以外所有元素的乘积。注意,有0存在。思路 第一个想法是类似sliding window法,先算第 1~(n-1) 个元素的乘积,作为ans[0],…

电脑win11系统怎么关闭自动更新,win11暂停和关闭系统自动更新6大招轻松搞定

Windows 11的自动更新功能&#xff0c;初衷是为了提升系统安全与性能。但在实际使用中&#xff0c;频繁的后台下载和强制重启往往让人困扰&#xff0c;尤其是对正在工作、游戏或需要稳定环境的用户来说&#xff0c;更是不可忽视的问题。因此&#xff0c;学会灵活地关闭或延迟自…

Oracle数据库迁移至KingbaseES:完整实战指南

Oracle数据库迁移至KingbaseES&#xff1a;完整实战指南 KingbaseES内部提供了大量的Oracle兼容特性&#xff0c;因此&#xff0c;在实际的迁移过程中&#xff0c;一般只需对导出脚本做很少的修改&#xff0c;甚至在迁移对象功能全兼容的情况下可以不做任何修改。不仅如此&…

【异常】FreeMarker 模板文件找不到问题解决方案 Template not found for name “mail/captcha.ftl“.

一、报错内容 cn.hutool.core.io.IORuntimeException: TemplateNotFoundException: Template not found for name "mail/captcha.ftl". The name was interpreted by this TemplateLoader: ClassTemplateLoader(classLoader="jdk.internal.loader.ClassLoaders…

保姆级教程:Ubuntu搭建本地AI助手,从Docker到DeepSeek-R1一站式指南,建议收藏!

本文主要介绍如何在Ubuntu操作系统环境下&#xff0c;零基础快速安装Docker环境、安装Ollama、安装本地大模型DeepSeek-R1和大模型可视化工具Open WebUI&#xff0c;快速在本地搭建一款专属AI智能小助手。 1.检查Docker环境 检查是否已安装docker运行环境&#xff0c;在控制台…

NAS —— Centos8挂载Nas到本地目录使用(多图完整教程)

需求与结果 需求:有一台Centos8台式机、一台Synology Nas(DS821),需要将Nas挂载到Centos8上目录上进行使用。 最终结果: 步骤 1、首先保证Centos8可以ping通NAS设备、同时可在Centos8上访问NAS网页端。        2、进入NAS网页操作 (1) 进入DSM控制面板 → 共享文件…

由特殊到一般

lc3301 从最大元素开始贪心 对数组降序排序后&#xff0c;让每个元素不超过前一个元素减1 若出现非正数则返回-1&#xff0c;否则计算数组元素总和 class Solution { public: long long maximumTotalSum(vector<int>& maximumHeight) { ranges::sort(max…

【AI+教育】实践:从策略优化到群体应用的探索

例如&#xff0c;有研究聚焦智能苏格拉底绘画机器人的开发。该机器人内置苏格拉底对话模式&#xff0c;这是一种古老的对话模式。苏格拉底的对话模式&#xff0c;主张通过不断追问&#xff0c;引导人们对自身所做之事进行更深层次的反思与思考。研究通过苏格拉底追问式构建多智…

深入解析:基于势场法的多智能体机器人编队控制

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

吐血推荐8个AI论文软件,助你轻松搞定本科生毕业论文!

吐血推荐8个AI论文软件&#xff0c;助你轻松搞定本科生毕业论文&#xff01; AI工具让论文写作不再难 对于许多本科生来说&#xff0c;撰写毕业论文是一项既复杂又充满挑战的任务。从选题到资料收集&#xff0c;从大纲搭建到初稿完成&#xff0c;每一个环节都可能让人感到手足无…

揭秘提示工程架构师在电子商务应用的领先策略

揭秘提示工程架构师在电子商务应用的领先策略&#xff1a;开启电商智能新时代 关键词&#xff1a;提示工程架构师、电子商务、语言模型、用户体验、个性化推荐、智能客服 摘要&#xff1a;本文深入探讨提示工程架构师在电子商务领域的关键作用及其领先策略。通过生动的比喻和…