专栏首页二狗的DBA之路MySQL5.7.25 下 报错提示innodb_table_stats 解决方法

MySQL5.7.25 下 报错提示innodb_table_stats 解决方法

最近在做灾备数据从库, 从库版本使用的是5.7.25, 主库版本是5.7.22. 配置完主从同步后,瞄了一眼从库的错误日志里面,突然蹦出一堆的下面这种:

MySQL generates the warning Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade

根据提示,可以看到是因为 mysql.innodb_table_stats 这张表某个列问题。 那么对比下新老库看看吧。

如下:

主库截图如下:

mysql> select @@version;
+---------------+
| @@version     |
+---------------+
| 5.7.22-22-log |
+---------------+
1 row in set (0.00 sec)
mysql> use mysql
Database changed
mysql> show create table innodb_index_stats\G
*************************** 1. row ***************************
       Table: innodb_index_stats
Create Table: CREATE TABLE `innodb_index_stats` (
  `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `index_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `stat_value` bigint(20) unsigned NOT NULL,
  `sample_size` bigint(20) unsigned DEFAULT NULL,
  `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0
1 row in set (0.00 sec)

从库截图如下:

mysql> select @@version;
+---------------+
| @@version     |
+---------------+
| 5.7.25-28-log |
+---------------+
1 row in set (0.00 sec)
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show create table innodb_index_stats\G
*************************** 1. row ***************************
       Table: innodb_index_stats
Create Table: CREATE TABLE `innodb_index_stats` (
  `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `table_name` varchar(199) COLLATE utf8_bin NOT NULL,
  `index_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
  `stat_value` bigint(20) unsigned NOT NULL,
  `sample_size` bigint(20) unsigned DEFAULT NULL,
  `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0
1 row in set (0.00 sec)

可以看出,5.7.25 版本上的 innodb_index_stats 的 `table_name` 列,长度从64 变成了 199

解决方法,就是 在从库上执行下 mysql_upgrade ,然后重启下mysqld进程即可。

5.7.23的 Release Notes 如下:

    地址:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-23.html

Bugs Fixed

    Important Change; Partitioning: After creating partitioned InnoDB tables with very long names, the table_name columns in the corresponding entries in the mysql.innodb_index_stats and mysql.innodb_table_stats system tables were truncated. To fix this issue, the length of the table_name column in each of these tables has been increased from 64 to 199 characters. In both cases, this is now the same as the lengths of these columns in MySQL 8.0.

    When upgrading to this release, use mysql_upgrade to effect these changes in your MySQL installation. In the event that you fail to do this, MySQL generates the warning Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade in the error log.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 避免 proxysql 跟后端建立过多连接的方法

    原文地址: https://www.percona.com/blog/2019/09/27/multiplexing-mux-in-proxysql/

    二狗不要跑
  • 使用go-mysql-postgresql实现 MySQL实时同步数据到PG

    MySQL to PG 的数据同步,可以通过canal 或者 bireme 来做,但是操作起来步骤都比较费事。

    二狗不要跑
  • Linux下常用的配置IP及route的命令汇编

    Linux下用于配置或者查看IP地址、路由表的命令有很多,本文打算将其都罗列出来,后面想到其它的命令再一一补充。

    二狗不要跑
  • ubuntu中使用网络安装mysql

    现在的软件越来越好安装,尤其是在ubuntu下安装软件,更是没有技巧,只需要在联网的情况下使用apt-get inatll 即可。在决定安装mysql之前,要...

    闵开慧
  • salt-api return mysql返回的使用,记录操作日志

    程序员同行者
  • Mysql常用命令行大全

    键入命令mysql -u root -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:

    week
  • 谷歌大脑负责人Jeff Dean:深度学习技术及趋势报告(76页PPT)

    【新智元导读】谷歌大脑负责人Jeff Dean上周在“嵌入式视觉年度峰会”上发表演讲《智能计算系统中的大规模深度学习》,结合多年应用实例,讨论在从手机到数据中心...

    新智元
  • 基于Keras/Python的深度学习模型Dropout正则项

    dropout技术是神经网络和深度学习模型的一种简单而有效的正则化方式。 本文将向你介绍dropout正则化技术,并且教你如何在Keras中用Python将其应...

    CSDN技术头条
  • win10 UWP 标题栏后退

    BackRequested 后退方法,如何获得参见:c# 设计模式 责任链.md 注意不要在每个页面的构造都使用添加事件,如果这样子,那么就会出现按一下后退出现...

    林德熙
  • JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量

    http://dev.mysql.com/downloads/connector/j/

    授客

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动