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就行,不用重建)

相关推荐
打鱼又晒网18 分钟前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
向上的车轮3 小时前
软件世界中的超级bug有哪些?
bug
武子康3 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
黑色叉腰丶大魔王3 小时前
《MySQL 数据库备份与恢复》
mysql
Ljw...3 小时前
索引(MySQL)
数据库·mysql·索引
OpsEye4 小时前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级
Ljw...4 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
i道i11 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql