mysql bug( InnoDB: Error number 22),表突然不能读取

mysql bug( InnoDB: Error number 22),表突然不能读取

bug

最开始的bug:表突然不能读取

html 复制代码
2024-03-06 15:06:11 2024-03-06T07:06:11.137389Z 17 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2024-03-06 15:06:11 2024-03-06T07:06:11.137394Z 17 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
2024-03-06 15:06:11 2024-03-06T07:06:11.137397Z 17 [ERROR] InnoDB: File ./webbuild/sys_config.frm: 'stat' returned OS error 122.

关闭mysql容器,再次重启失败

html 复制代码
2024-03-06 15:07:25 2024-03-06T07:07:25.883653Z 0 [ERROR] InnoDB: Operating system error number 22 in a file operation.
2024-03-06 15:07:25 2024-03-06T07:07:25.883688Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2024-03-06 15:07:25 2024-03-06T07:07:25.883695Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
2024-03-06 15:07:25 2024-03-06T07:07:25.883698Z 0 [ERROR] InnoDB: File .//ib_buffer_pool: 'stat' returned OS error 122.
2024-03-06 15:07:25 2024-03-06T07:07:25.883703Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2024-03-06 15:07:25 2024-03-06T07:07:25.883877Z 0 [ERROR] InnoDB: Cannot open '/var/lib/mysql/ib_buffer_pool.incomplete' for writing: Invalid argument
2024-03-06 15:07:26 2024-03-06T07:07:26.585788Z 0 [ERROR] InnoDB: Operating system error number 5 in a file operation.
2024-03-06 15:07:26 2024-03-06T07:07:26.585931Z 0 [ERROR] InnoDB: Error number 5 means 'Input/output error'
2024-03-06 15:07:26 2024-03-06T07:07:26.585953Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
2024-03-06 15:07:26 2024-03-06T07:07:26.585967Z 0 [ERROR] InnoDB: File ./ib_logfile0: 'Linux aio' returned OS error 105. Cannot continue operation
2024-03-06 15:07:26 2024-03-06T07:07:26.585975Z 0 [ERROR] InnoDB: Cannot continue operation.
2024-03-05 13:42:51 2024-03-05 05:42:51+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-03-05 13:42:51 2024-03-05 05:42:51+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-03-05 13:42:51 2024-03-05 05:42:51+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-03-05 13:42:52 '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'

解决方案

不重建容器的几种可能措施

关键的信息:

  • File ./webbuild/sys_config.frm: 'stat' returned OS error 122.
  • Operating system error number 22 in a file operation.
  • File .//ib_buffer_pool : 'stat' returned OS error 122.
  • Cannot open '/var/lib/mysql/ib_buffer_pool.incomplete' for writing: Invalid argument
  • File ./ib_logfile0 : 'Linux aio' returned OS error 105. Cannot continue operation
  • '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'

查了下,有以下几种可能:

  • dokcer在windows上的文件系统兼容问题('Linux aio'),重启docker(优先建议这种方法,docker引擎在window很容易出问题)
  • 我的sys_config表的stat字段有问题,移除它的表文件
  • 容器内存不够,mysql的缓存页空间不足(ib_buffer_pool),docker update扩容
  • logfile文件问题:备份并移除logfile文件(./ib_logfile0)

除了重启没试过,其他试了都没有,我就重建容器了(因为其他容器正常就没第一时间怀疑docker),后面还是重启docker解决

重建容器

重建

html 复制代码
docker run  --env=MYSQL_ROOT_PASSWORD=xxxx --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=GOSU_VERSION=1.16 --env=MYSQL_MAJOR=5.7 --env=MYSQL_VERSION=5.7.44-1.el7 --env=MYSQL_SHELL_VERSION=8.0.35-1.el7 --volume=E:\volume\mysql\mysql5.7\conf:/etc/mysql/conf.d --volume=E:\volume\mysql\mysql5.7\data:/var/lib/mysql --volume=E:\volume\mysql\mysql5.7\log:/var/log --volume=/var/lib/mysql -p 3306:3306 --restart=no --runtime=runc --memory="1073741824" -d mysql:5.7

如果懒得打命令或者忘记命令

2种方式:

  • docker desktop软件
  • docker commit

可能的run bug:xxxx file exists.

html 复制代码
docker: Error response from daemon: error while creating mount source path '/run/desktop/mnt/host/e/volume/mysql/mysql5.7/data': mkdir /run/desktop/mnt/host/e: file exists.

docker在windows上的兼容问题,将docker重启一下,再次run ,ok
(说明最开始的mysql bug应该就是docker的文件系统兼容问题,应该重启docker就行,不用重建)

相关推荐
skiy2 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
创世宇图2 小时前
Alibaba Cloud Linux 安装生产环境-mysql
linux·mysql
重庆小透明3 小时前
【搞定面试之mysql】第一篇:mysql的优化和索引
mysql·面试·职场和发展
sthnyph4 小时前
MySQL 8.0在windows环境安装及配置
windows·mysql·adb
道清茗5 小时前
【MySQL知识点问答题】 MySQL 配置参数和内存管理
数据库·mysql
闻哥6 小时前
MySQL InnoDB 缓存池(Buffer Pool)详解:原理、结构与链表管理
java·数据结构·数据库·mysql·链表·缓存·面试
heze096 小时前
sqli-labs-Less-50
数据库·mysql·网络安全
木易 士心6 小时前
深入理解 MySQL 权限撤销(REVOKE)机制:从语法到安全实践
数据库·后端·mysql·安全
AlunYegeer7 小时前
论mysql的redo_log和bin_log,redis的RDB和AOF的类似记忆
数据库·redis·mysql
悲伤小伞7 小时前
9-MySQL_索引
linux·数据库·c++·mysql·centos