前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL启动后版本号居然不对?

MySQL启动后版本号居然不对?

作者头像
July
发布2022-11-11 15:28:49
1.2K0
发布2022-11-11 15:28:49
举报
文章被收录于专栏:数据库干货铺

1. 异常描述

使用xtrabackup对主库进行备份,在从节点主机上进行恢复,并将还原后的实例部署为主库的从节点。在启动介质与主库版本一致的情况下,启动主从同步后,日志出现如下错误:

代码语言:javascript
复制
2022-10-30T11:44:17.442001Z 296 [ERROR] InnoDB: Column table_name in table `mysql`.`innodb_table_stats` is VARCHAR(597) NOT NULL but should be VARCHAR(192) NOT NULL (length mismatch).
2022-10-30T11:44:17.442029Z 296 [ERROR] InnoDB: Fetch of persistent statistics requested for table `testdb1`.`tb1` but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead.
2022-10-30T11:44:17.567223Z 296 [ERROR] InnoDB: Column table_name in table `mysql`.`innodb_table_stats` is VARCHAR(597) NOT NULL but should be VARCHAR(192) NOT NULL (length mismatch).
2022-10-30T11:44:17.567240Z 296 [ERROR] InnoDB: Fetch of persistent statistics requested for table `testdb2`.`tb1` but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead.

以上错误一般都是数据库版本不一致导致。但是查看启动命令是正常的

代码语言:javascript
复制
/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/app/data/mysql3307/etc/my.cnf

对应的版本也是符合预期的:

代码语言:javascript
复制
[ops@ck2 ~]$ /usr/local/mysql5.7/bin/mysqld --version
/usr/local/mysql5.7/bin/mysqld  Ver 5.7.25-28 for Linux on x86_64 (Percona Server (GPL), Release 28, Revision c335905)

但是登录数据库中查看版本:

确实与启动的版本不一致。

2. 解决方案

查看本机上mysql是否有多个版本的启动文件

经查,确实如此。而第一个版本正式启动后数据库里检测到的版本。

2.1 解决思路

检查配置文件:

因数据库启动时与配置文件中的basedir也有关系,先检查配置文件:发现没问题

检查环境变量

代码语言:javascript
复制
export MYSQL_HOME=/app/mysql5.7
export MY_BASEDIR_VERSION=/app/mysql5.7
export PATH=/app/mysql5.7/bin:/app/mysql5.7/scripts:$PATH
export LD_LIBRARY_PATH=/app/mysql5.7/lib

发现环境变量里配置的确实是mysql5.7.18的路径。

2.2 调整环境变量

将对应的路径改为当前版本的路径

代码语言:javascript
复制
export MYSQL_HOME=/usr/local/mysql5.7
export MY_BASEDIR_VERSION=/usr/local/mysql5.7
export PATH=/usr/local/mysql5.7/bin:/usr/local/mysql5.7/scripts:$PATH
export LD_LIBRARY_PATH=/usr/local/mysql5.7/lib

2.3 重启数据库

关闭数据库

代码语言:javascript
复制
mysql> set global  innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)

mysql> shutdown;

启动数据库

代码语言:javascript
复制
numactl  --interleave=all  /usr/local/mysql5.7/bin/mysqld_safe  --defaults-file=/app/data/mysql3307/etc/my.cnf   &

查看版本,是预期的情况了。

检查配置文件: 也没有再出现对应的错误了,至此问题解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库干货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档