MySQL5.7小版本升级-In-Place方式

在 Centos7.9上升级二进制方式安装的MySQL 。升级方式有就地升级和逻辑升级2种方法,本实验演示In-Place Upgrade就地升级的方式将mysql-5.7.17升级至5.7.44

  • In-Place Upgrade就地升级
  • Logical Upgrade逻辑升级

升级方式介绍

In-Place Upgrade就地升级

In-Place Upgrade 就地升级介绍

就地升级包括关闭旧的MySQL服务器,用新的MySQL二进制文件或包替换旧的MySQL二进制文件或包,在现有数据目录上重新启动MySQL,以及升级现有安装中需要升级的任何剩余部分。

In-Place Upgrade 就地升级步骤

mysql-5.7.17升级至5.7.44

XA事务检查

如果将 XA 事务与 一起使用 InnoDB ,请在升级前运行 XA RECOVER 以检查未提交的 XA 事务。如果返回结果,则通过发出 XA COMMIT or XA ROLLBACK 语句来提交或回滚 XA 事务。

--1.检查未提交的 XA 事务XA RECOVER;--2.1.如果有提交的 XA 事务,提交XA 事务XA COMMIT --2.2.如果没提交的 XA 事务,回滚 XA 事务
XA ROLLBACK
执行完全清除和更改缓冲区合并
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"

在缓慢关机的情况下,在关机前执行完全清除和更改缓冲区合并, InnoDB 这可确保数据文件在版本之间文件格式存在差异的情况下已完全准备好。

关闭旧的 MySQL 服务器
mysqladmin -u root -p shutdown
升级 MySQL 二进制安装或软件包

升级 MySQL 二进制安装或软件包。如果升级二进制安装,请解压缩新的MySQL二进制分发包。请参阅获取并解压缩发行版。对于基于包的安装,请安装新包。

tar -xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /data
mv mysql-5.7.44-linux-glibc2.12-x86_64/ mysql574
启动 MySQL 5.7 服务器
mysqld --defaults-file=/etc/my.cnf
或
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
运行mysql_upgrade
mysql_upgrade -u root -p

mysql_upgrade检查所有数据库中的所有表是否与当前版本的 MySQL 不兼容。mysql_upgrade还会升级 mysql 系统数据库,以便您可以利用新的特权或功能。

重新启动MySQL服务器

关闭并重新启动MySQL服务器,以确保对系统表所做的任何更改生效。

mysqladmin -u root -p shutdown
mysqld --defaults-file=/etc/my.cnf
或
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &

问题处理

1.升级失败[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
--问题描述
用升级后的mysql5.7.44启动失败,现场原环境版本mysql-5.7.17,配置文件默认生成,/etc/my.cnf中无sql_mode参数
[root@icpsp mysql5744]# cd bin/
[root@icpsp bin]# ./mysqld --defaults-file=/etc/my.cnf
2023-11-04T06:50:07.972038Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).--解决办法
/etc/my.cnf中增加
explicit_defaults_for_timestamp=on
补充
explicit_defaults_for_timestamp参数解释

简介:
explicit_defaults_for_timestamp 系统变量决定MySQL服务端对timestamp列中的默认值和NULL值的不同处理方法。
此变量自MySQL 5.6.6 版本引入,分为全局级别和会话级别,可动态更新,默认值为OFF。本文主要介绍该参数打开和关闭情况下对timestamp的影响 。
5.6、5.7默认禁用,8.0默认启用,未来参数会废弃,官方建议要开启。
explicit_defaults_for_timestamp参数动态的,但实测5.6.43还是非动态的,5.7是动态的了。
正常情况下开启explicit_defaults_for_timestamp=on,将timestamp限制标准化操作。如果
explicit_defaults_for_timestamp = OFF,TIMESTAMP没有显示声明NULL属性,列将自动声明为 NOT NULL。对这个列插入NULL值的话,会自动分配为当前时间戳的值。查看了下参数,5.6端果然是OFF,5.7设置后再次运行

  • explicit_defaults_for_timestamp = OFF

当该参数默认设置为OFF时,其行为如下:
在默认情况下,如果timestamp列没有显式的指明null属性,那么该列会被自动加上not null属性(而其他类型的列如果没有被显式的指定not null,那么是允许null值的),如果往这个列中插入null值,会自动的设置该列的值为current timestamp值。
表中的第一个timestamp列,如果没有指定null属性或者没有指定默认值,也没有指定ON UPDATE语句。那么该列会自动被加上DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。
对于其它TIMESTAMP列,如果没有显示指定NULL和DEFAULT属性的话,会自动设置为NOT NULL DEFAULT ‘0000-00-00 00:00:00’。
(当然,这个与SQL_MODE有关,如果SQL_MODE中包含’NO_ZERO_DATE’,实际上是不允许将其默认值设置为’0000-00-00 00:00:00’的。)
下面我们来测试下:(本文操作基于MySQL5.7.23 版本 SQL_MODE不包含’NO_ZERO_DATE’)
现场原环境版本mysql-5.7.17,配置文件默认,无sql_mode参数。

--查看参数  默认为off
show variables like 'explicit_defaults_for_timestamp';# 5.6和5.7分别创建表
CREATE TABLE `up_test` (`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
)# 5.6环境
[SQL]insert into up_test(create_time) values(null);
受影响的行: 1
时间: 0.129s# 5.7环境(其实哪个环境不重要,5.6同样可能出现这个问题)
[SQL]insert into up_test(create_time) values(null);
[Err] 1048 - Column 'create_time' cannot be null
----------------------------------------------------------------------
## 5.7环境 设置explicit_defaults_for_timestamp为OFF
set session explicit_defaults_for_timestamp = off# 成功写入了
[SQL]insert into up_test(create_time) values(null);
受影响的行: 1
时间: 0.129s
create table test (col1 timestamp,col2 timestamp,col3 timestamp default '2010-01-01 00:00:00');show create table test;

https://www.cnblogs.com/wqbin/p/12017308.html#:~:text=%E7%AE%80%E4%BB%8B%EF%BC%9A%20explicit_defaults_for_timestamp%20%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F%E5%86%B3%E5%AE%9AMySQL%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%AF%B9timestamp%E5%88%97%E4%B8%AD%E7%9A%84%E9%BB%98%E8%AE%A4%E5%80%BC%E5%92%8CNULL%E5%80%BC%E7%9A%84%E4%B8%8D%E5%90%8C%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95%E3%80%82,%E6%AD%A4%E5%8F%98%E9%87%8F%E8%87%AAMySQL%205.6.6%20%E7%89%88%E6%9C%AC%E5%BC%95%E5%85%A5%EF%BC%8C%E5%88%86%E4%B8%BA%E5%85%A8%E5%B1%80%E7%BA%A7%E5%88%AB%E5%92%8C%E4%BC%9A%E8%AF%9D%E7%BA%A7%E5%88%AB%EF%BC%8C%E5%8F%AF%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0%EF%BC%8C%E9%BB%98%E8%AE%A4%E5%80%BC%E4%B8%BAOFF%E3%80%82

2.–secure-file-priv is set to NULL
--问题描述
5.7.44启动报错
[root@icpsp bin]# ./mysqld --defaults-file=/etc/my.cnf
2023-11-04T06:50:07.972146Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled--解决办法
/etc/my.cnf中增加secure_file_priv=/var/lib/mysql-files
3.Can’t find error-message file '/usr/local/mysql/share/errmsg.sys
--问题描述
[root@icpsp bin]# ./mysqld --defaults-file=/etc/my.cnf
2023-11-04T06:50:07.972211Z 0 [ERROR] Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.--解决办法
由于/etc/my.cnf中无basedir导致,增加=basedir=/usr/local/mysql5744
4.[ERROR] Fatal error: Please read “Security” section
--问题描述
[root@icpsp bin]# ./mysqld --defaults-file=/etc/my.cnf
[ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!--解决办法
./mysqld_safe --user=mysql --datadir=/var/lib/mysql
5.unknown variable ‘defaults-file=/etc/my.cnf’
--问题描述
升级报错
[root@icpsp bin]# ./mysqld_safe --user=mysql --defaults-file=/etc/my.cnf
2023-11-04T07:17:35.477102Z mysqld_safe Logging to '/var/log/mysqld.log'.
2023-11-04T07:17:35.541449Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2023-11-04T07:17:37.563218Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended2023-11-04T07:17:35.848345Z 0 [ERROR] unknown variable 'defaults-file=/etc/my.cnf'
2023-11-04T07:17:35.848357Z 0 [ERROR] Aborting--解决办法
去掉--defaults-file 使用datadir参数
[root@icpsp bin]# ./mysqld_safe --user=mysql --datadir=/var/lib/mysql
6.Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
--问题描述
[root@icpsp bin]# ./mysql_upgrade -uroot -p
Enter password: 
mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) while connecting to the MySQL server
Upgrade process encountered error and will not continue.--解决办法
[root@icpsp bin]# find / -name mysql.sock
find: ‘/proc/223135’: 没有那个文件或目录
/var/lib/mysql/mysql.sock[root@icpsp bin]# ./mysql_upgrade -uroot -p -S /var/lib/mysql/mysql.sock

注意事项

1.升级 MySQL 二进制安装或软件包

如果升级最初通过安装多个 RPM 软件包生成的安装,请升级所有软件包,而不仅仅是部分软件包。例如,如果您以前安装了服务器和客户端 RPM,请不要只升级服务器 RPM。
对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括对管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上,未安装 mysqld_safe。在这种情况下,请使用 systemd 进行服务器启动和关闭,而不是以下说明中使用的方法。参见第 2.5.10 节“使用 systemd 管理 MySQL 服务器”。

2.升级时区表或帮助表

mysql_upgrade不会升级时区表或帮助表的内容。有关升级说明,请参见第 5.1.13 节“MySQL 服务器时区支持”和第 5.1.14 节“服务器端帮助支持”。
https://dev.mysql.com/doc/refman/5.7/en/upgrade-binary-package.html#upgrade-procedure-inplace

补充

5.7.17初始化报错
[root@localhost opt]# /data/mysql517/mysql517/bin/mysqld --initialize  --user=mysql  --basedir=/data/mysql517/mysql517 --datadir=/data/mysql517/data517 --console
2023-11-01T10:33:22.256835+08:00 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-11-01T10:33:22.256880+08:00 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2023-11-01T10:33:22.259127+08:00 0 [ERROR] Fatal error: Can't change to run as user 'mysql' ;  Please check that the user exists!--问题处理:[Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
5.7和8.0的配置文件sql_mode不通用--问题处理:[ERROR] Fatal error: Can't change to run as user 'mysql'
groupadd mysql
useradd -r -g mysql -s /bin/false mysql--问题处理:[Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE'sql modes should be used with strict mode
2023-11-01T02:49:46.611330Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.--问题处理:
2023-11-01T02:55:20.918005Z 0 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2023-11-01T02:55:20.918095Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2023-11-01T02:55:20.918176Z 0 [ERROR] unknown variable 'binlog_expire_logs_seconds=1296000'
2023-11-01T02:55:20.918179Z 0 [ERROR] Aborting
去掉该参数--问题处理
2023-11-01T11:07:23.923351+08:00 0 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2023-11-01T11:07:23.923777+08:00 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2023-11-01T11:07:23.925299+08:00 0 [Note] InnoDB: Loading buffer pool(s) from /data/mysql517/data517/ib_buffer_pool
2023-11-01T11:07:23.925679+08:00 0 [Note] InnoDB: Buffer pool(s) load completed at 231101 11:07:23
2023-11-01T11:07:23.928439+08:00 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2023-11-01T11:07:23.928865+08:00 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2023-11-01T11:07:23.928879+08:00 0 [Note] Server hostname (bind-address): '*'; port: 2213
2023-11-01T11:07:23.929572+08:00 0 [Note] IPv6 is available.
2023-11-01T11:07:23.929584+08:00 0 [Note]   - '::' resolves to '::';
2023-11-01T11:07:23.929605+08:00 0 [Note] Server socket created on IP: '::'.
2023-11-01T11:07:23.931293+08:00 0 [Warning] Failed to open optimizer cost constant tables2023-11-01T11:07:23.931363+08:00 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2023-11-01T11:07:23.931399+08:00 0 [ERROR] Aborting问题分析:mysql库中正是缺少了user表数据  配置文件不对导致初始化的有问题
问题处理:
vi /etc/my.cnf中去掉plugin有关的参数,重新初始化/data/mysql517/mysql517/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
配置系统服务
--配置mysqld启动服务文件
cd /usr/local/mysql517/support-files
cp mysql.service /etc/init.d/mysqld
vi /etc/init.d/mysqld  更改 basedir 和datadir参数--配置开启自启
chkconfig --list
chkconfig --level  2345  mysqld  on--启动服务
service mysqld start
service mysqld status

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

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

相关文章

perl列表创建、追加、删除

简介 perl 列表追加元素 主要是通过push和unshift函数来实现。其中,push是追加到列表尾,unshift是追加到列表头。 perl列表删除元素 主要是通过pop和shift函数来实现。其中,pop是从列表尾删除一个元素, shift是从列表头删除一…

6大场景,玩转ChatGPT!

文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 本文是在GPT3.5版本下演示的 我们知道AI技术不仅能够自动生成文章和内容,还可以根据我们…

【大数据】NiFi 中的重要术语

NiFi 中的重要术语 1.Flow Controller2.Processor3.Connection4.Controller Service5.Process Group6.FlowFile 那些一个个黑匣子称为 Processor,它们通过称为 Connection 的队列交换名为 FlowFile 的信息块。最后,FlowFile Controller 负责管理这些组件…

软考高级系统架构设计师系列之:软考高级系统架构设计师论文专题

软考高级系统架构设计师系列之:软考高级系统架构设计师论文专题 一、论文相关内容二、论文专题大纲三、论文考试方式四、历年真题汇总分析五、论文常见问题六、论文评分标准七、搭建论文万能模版八、论文万能模版公式九、搭建论文万能模版—摘要十、搭建论文万能模版—背景十一…

XSAN数据恢复-存储空间架构迁移时误格式化存储系统的XSAN数据恢复案例

XSAN数据恢复环境: 昆腾存储,MAC OS操作系统,存放视频类数据(MXF、MOV等格式文件)。 XSAN故障&检测: 将存储空间从XSAN架构迁移到STORNEXT架构后,存储空间中数据全部丢失。 故障存储中一共…

Oracle常用运维SQL-SQL执行性能及锁表等查询分析

oracle相关系列文章: docker–在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例 Oracle常用运维SQL–用户管理、数据导入、导出的实用脚本 Oracle TEMPORARY TABLE 临时表的使用及删除报ORA-14452错误的解决办法 Oracle常用运维SQL-SQL执行性能及…

R 复习 菜鸟教程

R语言老师说R好就业,学就完了 基础语法 cat()可以拼接函数: > cat(1, "加", 1, "等于", 2, \n) 1 加 1 等于 2sink():重定向 sink("r_test.txt", splitTRUE) # 控制台同样输出 for (i in 1:5) print(i…

蓝桥杯官网填空题(方格计数)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下图所示,在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…

【星海出品】VUE(五)

表单 表单输入绑定 只需要v-model声明一下这个变量就可以。 还可以选择不同的类型&#xff0c;例如 type"checkbox“ v-model 也提供了 lazy、number、.trim 功能&#xff0c;只需要在v-model后面加入.lazy 例如&#xff1a;v-model.lazy”message“ <template><…

Azure 机器学习 - 设置 AutoML 训练时序预测模型

目录 一、环境准备二、训练和验证数据三、配置试验支持的模型配置设置特征化步骤自定义特征化 四、可选配置频率和目标数据聚合启用深度学习目标滚动窗口聚合短时序处理非稳定时序检测和处理 五、运行试验六、用最佳模型进行预测用滚动预测评估模型精度预测未来 七、大规模预测…

Flink源码解析八之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

css主题切换

html <!DOCTYPE html> <html> <head><title>主题切换示例</title> </head> <body><div class"app"><button id"themeButton">切换主题</button><div class"content"><h1…

已完结,给小白的《50讲Python自动化办公》

大家好&#xff0c;这里是程序员晚枫&#xff0c;小红薯也叫这个名。 写在前面 上个周末去成都参加了第8届中国开源年会&#xff0c;认识了很多行业前辈和优秀的同龄人。 我发现在工作之外还能有一番事业的人&#xff0c;都有一个让我羡慕的共同点&#xff1a;有一个拿得出手…

【Go】-调用企微机器人

没有什么好讲的&#xff0c;直接贴代码&#xff0c;消息格式我用的markdown。 sendMsg.go&#xff1a; package mainimport ("flag""fmt""github.com/goccy/go-json""github.com/tidwall/gjson""io/ioutil""net/http…

C++笔记之表驱动法

C笔记之表驱动法 code review! 文章目录 C笔记之表驱动法0.数组小技巧1.std::map实现2.结构体实现3.数组和结构体结合实现表驱动法-存储函数指针4.表驱动法概念-ChatGPT5. 直接访问表&#xff08;Direct Access Table&#xff09;的示例6. 索引访问表&#xff08;Indexed Acc…

Yolov8目标识别与实例分割——算法原理详细解析

前言 YOLO是一种基于图像全局信息进行预测并且它是一种端到端的目标检测系统&#xff0c;最初的YOLO模型由Joseph Redmon和Ali Farhadi于2015年提出&#xff0c;并随后进行了多次改进和迭代&#xff0c;产生了一系列不同版本的YOLO模型&#xff0c;如YOLOv2、YOLOv3、YOLOv4&a…

项目上线前发现严重Bug怎么办?

今天分享一个面试问题&#xff0c;现在有一个面试场景&#xff1a; 项目计划明天发布&#xff0c;但是在今天你作为测试人员发现了一个严重的bug&#xff0c;市场相关人员又在催发布的事情&#xff0c;这个时候你应该怎么办&#xff1f; 这是测试工程师不管是在面试&#xff0…

JVM常用命令

jps —查看pid jstat -gcutil 4364 1000 2000 —查看堆内存占用百分比&#xff0c;每秒打印1次&#xff0c;总共打印2000次 S0&#xff1a;幸存1区当前使用比例 S1&#xff1a;幸存2区当前使用比例 E&#xff1a;伊甸园区使用比例 O&#xff1a;老年代使用比例 M&#xff1a;元…

基于计算机视觉的身份证识别系统 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-sen…

初识jQuery

文章目录 一、jQuery介绍二、Jquery优势三、jQuery版本四、jQuery对象jQuery的引用js代码与jQuery代码对比标签对象与jQuery对象 五、jQuery查找标签1.基本选择器2.组合选择器3.层次选择器4.属性选择器5.基本筛选器6.表单筛选器 六、筛选器方法七、操作标签1.class操作2.文本操…