MySQL数据库版本升级

1 背景
金蝶云苍穹系统可以使用MySQL作为关系型数据库,随着MySQL的广泛应用和版本迭代,我们有时会需要对使用的MySQL环境进行升级来修复bug或安全漏洞。所以本文以MySQL8.0.21升级8.0.23的方法为例(小版本升级方法相同)。
如需从MySQL5.7升级到8.0,则需要重新安装高版本数据库,并使用备份恢复的方法恢复数据到新库中,新数据库参数配置文件等需要手工修改。
注意事项:升级操作均需在测试环境进行验证测试,请勿直接升级生产环境!
2 升级前准备
2.1 备份整个数据库
通过mysqldump备份数据库:
mysqldump --no-defaults -u数据库用户名 -p数据库密码 -h数据库地址 --port=数据库端口 --max-allowed-packet=256M --set-gtid-purged=OFF --single-transaction -R --flush-logs --master-data=2 --all-databases > all_database.sql
2.2 准备mysql安装包
从mysql官网下载升级目标安装包,下载地址:https://dev.mysql.com/downloads/mysql/

选择安装路径:将下载好的安装包上传到指定路径,图中是以/kingdee为例

2.3 环境检查
本章节中所有mysql相关命令如果找不到,就将命令加上绝对路径,/usr/local/mysql/bin,例如mysqlcheck—>/usr/local/mysql/bin/mysqlcheck
2.3.1 在线检查数据库
在线检查数据库,执行以下命令:
mysqlcheck -u root -p -hlocalhost --all-databases --check-upgrade

如果mysqlcheck报告任何错误,请更正问题。
2.3.2 不得有使用不具有本机分区支持的存储引擎的分区表
要标识此类表,请执行以下查询:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql','sys','performance_schema') AND ENGINE NOT IN ('innodb', 'ndbcluster') AND CREATE_OPTIONS LIKE '%partitioned%';
查询结果中的任何表都必须更改为使用InnoDB或不分区。
要将表存储引擎更改为InnoDB,请执行以下语句:
ALTER TABLE table_name ENGINE = INNODB;
要使分区表成为非分区表,请执行以下语句:
ALTER TABLE table_name REMOVE PARTITIONING;
3 mysql升级
3.1 关闭innodb
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown

3.2 关闭MySQL服务
mysqladmin -u root -hlocalhost -p shutdown

3.3 更换启动目录
在上传安装包路径下,解压mysql安装包
# tar -xvf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz

更
MySQL数据库版本升级
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



